我希望针对循环中检测到的每个问题发出警告,但警告只发出一次,即第一次。例如:
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/