numpy.testing.clear_and_catch_warnings#
- class numpy.testing.clear_and_catch_warnings(record=False, modules=())[源代码]#
重置警告注册表以捕获警告的上下文管理器
警告可能很棘手,因为每当触发警告时,Python 都会在调用模块中添加一个
__warningregistry__成员.这使得无法在该模块中重新触发警告,无论您在警告过滤器中放入什么.此上下文管理器接受 modules 序列作为其构造函数的关键字参数,并且:存储并删除给定 modules 中所有
__warningregistry__条目(在进入时);在退出时将
__warningregistry__重置为其先前的状态.
这使得可以在上下文管理器内部重新触发任何警告,而不会干扰外部的警告状态.
为了与 Python 兼容,请将所有参数视为仅关键字参数.
- 参数:
- 记录bool, 可选
指定是否应通过
warnings.showwarning()的自定义实现捕获警告,并将其附加到上下文管理器返回的列表中.否则,上下文管理器将返回 None.附加到列表的对象是其属性反映showwarning()参数的参数.- 模块序列,可选
入口时重置警告注册表并在退出时恢复的模块序列.为了正确工作,所有“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