numpy.testing.clear_and_catch_warnings#
- class numpy.testing.clear_and_catch_warnings(record=False, modules=())[原始碼]#
重設警告註冊表以捕獲警告的上下文管理器
警告可能難以捉摸,因為每當觸發警告時,Python 都會將
__warningregistry__
成員新增至呼叫模組。這使得無法在此模組中重新觸發警告,無論您在警告篩選器中放入什麼。此上下文管理器接受一連串的 模組 作為其建構子的關鍵字引數,並且在進入時儲存並移除給定 模組 中的任何
__warningregistry__
項目;在退出時將
__warningregistry__
重設為其先前的狀態。
這使得在上下文管理器內重新觸發任何警告成為可能,而不會干擾外部警告的狀態。
為了與 Python 3.0 相容,請將所有引數視為僅限關鍵字。
- 參數:
- recordbool,選用
指定是否應由
warnings.showwarning()
的自訂實作捕獲警告,並附加到上下文管理器傳回的列表中。否則,上下文管理器會傳回 None。附加到列表中的物件是引數,其屬性反映showwarning()
的引數。- modulessequence,選用
模組序列,用於在進入時重設警告註冊表,並在退出時還原。為了正確運作,所有 'ignore' 篩選器都應依據這些模組之一進行篩選。
範例
>>> import warnings >>> with np.testing.clear_and_catch_warnings( ... modules=[np._core.fromnumeric]): ... warnings.simplefilter('always') ... warnings.filterwarnings('ignore', module='np._core.fromnumeric') ... # do something that raises a warning but ignore those in ... # np._core.fromnumeric