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