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