python模塊學習之warnings


warnings.warn(message, category=None, stacklevel=1, source=None)

發出警告,或者忽略它或引發異常。
category參數(如果給定)必須是警告類別類(見上文);它默認為UserWarning。
或者,消息可以是一個警告實例,在這種情況下,類別將被忽略,並且將使用消息.__ class__。
在這種情況下,消息文本將是str(消息)。
如果發出的特定警告通過上面的警告過濾器更改為錯誤,則此函數將引發異常。
stacklevel參數可以由Python編寫的包裝函數使用,如下所示:

def deprecation(message): warnings.warn(message, DeprecationWarning, stacklevel=2)

這使得警告引用deprecation()的調用者,而不是deprecation()本身的來源(因為后者會打破警告消息的目的)。

    源(如果提供)是發出ResourceWarning的被破壞的對象。

    版本3.6更改:添加源參數。

 

目前定義了以下警告類別類:

類 | 說明 ================ Warning | 這是所有警告類的基類。它是異常的子類。 UserWarning | warn()的默認類別。 DeprecationWarning | 關於不推薦使用的功能的警告的基類別(默認情況下忽略)。 SyntaxWarning | 關於可疑語法特征的警告的基類。 RuntimeWarning | 關於可疑運行時功能的警告的基類別。 FutureWarning | Base類別,用於關於將來會在語義上發生變化的構造的警告。 PendingDeprecationWarning | 關於將來不推薦使用的功能的警告的基本類別(默認情況下忽略)。 ImportWarning | 導入模塊過程中觸發的警告的基本類別(默認情況下忽略)。 UnicodeWarning | 與Unicode相關的警告的基類別。 BytesWarning | 與字節和bytearray相關的警告的基類別。 ResourceWarning | 與資源使用相關的警告的基類別。 雖然這些技術上是內置的異常,但它們在這里被記錄在案,因為在概念上它們屬於警告機制。

 

例子

# -*- coding: utf-8 -*-
# warnings模塊說明
import warnings

a,b= 1,23
class Twarnings(Warning):
	pass
try:
	assert a == 2
except Exception as e:
	warnings.warn('wrong!',Twarnings)

 結果

C:\Users\huangrong\Desktop\test.py:11: Twarnings: wrong! warnings.warn('wrong!',Twarnings) [Finished in 0.1s]

 

warnings.filterwarnings(action,message =“,category = Warning,module =”,lineno = 0,append = False)

    將條目插入到過濾規范的警告列表中。
    該條目默認插入前面;如果append為true,則將其插入到最后。
    這將檢查參數的類型,編譯消息和模塊正則表達式,並將其作為元組插入到警告過濾器列表中。
    如果兩者匹配特定的警告,則更接近列表前面的條目會覆蓋列表后面的條目。
    省略的參數默認為匹配所有內容的值。

warnings.simplefilter(action, category = Warning,lineno = 0,append = False)

    將一個簡單的條目插入到過濾規范的警告列表中。
    函數參數的含義與filterwarnings()一樣,但不需要正則表達式,因為插入的過濾器總是匹配任何模塊中的任何消息,
    只要類別和行號匹配即可。

 

參數說明

    action是以下字符串之一:
    值 | 處置
    “error” | 將匹配警告轉換為異常
    “ignore” | 不會打印匹配的警告
    “always” | 總是打印匹配的警告
    “default” | 打印發出警告的每個位置的首次出現的匹配警告
    “module” | 將為發出警告的每個模塊打印首次發生的匹配警告
    “once” | 僅打印第一次匹配的警告,不管位置如何

    message是一個包含正則表達式的字符串,警告消息的開始必須匹配。表達式被編譯為始終不區分大小寫。

    category是一個類(Warning的一個子類),其中警告類別必須是一個子類才能匹配。

    module是一個包含模塊名稱必須匹配的正則表達式的字符串。表達式被編譯為區分大小寫。

    lineno是發生警告的行號必須匹配的整數,或0以匹配所有行號。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM