对 warnings.warn 只显示一次警告感到困惑

Confused about warnings.warn only displaying a warning once

提问人:Britzel 提问时间:8/3/2023 更新时间:8/3/2023 访问量:143

问:

我是第一次使用 python 的模块向用户发出警告。特别是我正在使用这种方法。我对它的工作原理感到非常困惑,因为在某些情况下,它只显示一次警告,但在以后执行相同的代码时不会再次显示。我希望它在执行时始终显示。warningswarnings.warn

我还不能在最小的例子中重现这一点。但这是我代码的屏幕截图。 在类方法中执行(见下文)。warnings.warn

enter image description here

在上面和下面,我打印并知道解释器何时跑过警告命令。在此 Jupyter Notebook 中,我现在多次执行一个命令,每次都应显示警告。但它只在第一次越过相应线路时显示它,但之后不再显示。'Here''Still here!'

enter image description here

为什么会这样,我该如何改变? 感谢您的帮助!

python-3.x 警告

评论

2赞 Barmar 8/3/2023
请以文本形式发布代码、数据和结果,而不是屏幕截图(如何在帖子中设置代码格式)。为什么我不应该上传代码/数据/错误的图像? idownvotedbecau.se/imageofcode

答:

2赞 Brian61354270 8/3/2023 #1

这是默认警告筛选器的行为。引用文档,

"default":打印发出警告的每个位置(模块 + 行号)的匹配警告的第一次出现

如果需要其他行为,请配置警告筛选器以执行所需的操作。例如,如果希望始终打印所有类型的所有警告,请运行

warnings.simplefilter("always")