python - 为什么循环中只有一个警告?

标签 python loops warnings

我希望针对循环中检测到的每个问题发出警告,但警告只发出一次,即第一次。例如:

import warnings

for i in range(10):
   print i
   warnings.warn('this is a warning message')

我希望:

0
UserWarning: this is a warning message
1
UserWarning: this is a warning message
2
UserWarning: this is a warning message
3
UserWarning: this is a warning message
4

但结果是:

0
__main__:4: UserWarning: this is a warning message
1
2
3
4

为什么我只有一个警告?如何获得每次迭代的警告?

最佳答案

这是设计使然。请参阅 http://docs.python.org/2/library/warnings.html 上的文档:

通常会禁止对同一源位置重复特定警告。

您可以通过添加带有关键字 always 的过滤器来覆盖此行为,如下所示:

import warnings

warnings.simplefilter('always', UserWarning)
for i in range(10):
   print i
   warnings.warn('this is a warning message')

关于python - 为什么循环中只有一个警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22661745/

相关文章:

python - 用两个三角形定义菱形

python - PyQt5虚拟键盘(TypeError : missing 1 required positional argument)

Android循环字节码比较

objective-c - 更改 block 中的实例变量

objective-c - 获取 xcode 4.5 以警告新的 API 调用

重新编译 php 后的警告 (Unable to load dynamic library & Unable to initialize module)

python - 将机器学习模型保存/覆盖为 spark 集群中的单个文件

python - cv2.videocapture.read() 不返回 numpy 数组

java - 与 while 循环相关的变量声明的位置

Excel VBA 宏在运行一夜后没有响应