numpy.testing.clear_and_catch_warnings#

class numpy.testing.clear_and_catch_warnings(record=False, modules=())[源代码][源代码]#

重置警告注册表以捕获警告的上下文管理器

警告可能会很棘手,因为每当触发警告时,Python 会在 调用 模块中添加一个 __warningregistry__ 成员.这使得无法在此模块中重新触发警告,无论你在警告过滤器中设置了什么.这个上下文管理器接受一个 modules 作为其构造函数的关键字参数,并且:

  • 在进入时存储并移除给定 模块 中的任何 __warningregistry__ 条目;

  • 在退出时重置 __warningregistry__ 到其之前的状态.

这使得在上下文管理器内部可以重新触发任何警告,而不会干扰外部警告的状态.

为了与 Python 3.0 兼容,请将所有参数视为仅关键字参数.

参数:
recordbool, 可选

指定是否应通过 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