numpy.testing.clear_and_catch_warnings#

class numpy.testing.clear_and_catch_warnings(record=False, modules=())[source]#

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

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

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

  • 在退出时将 __warningregistry__ 重置为其先前状态。

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

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

参数::
record布尔值,可选

指定是否应该由 warnings.showwarning() 的自定义实现捕获警告并追加到上下文管理器返回的列表中。否则上下文管理器将返回 None。追加到列表中的对象是其属性镜像 showwarning() 参数的属性的 arguments。

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