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