Python:为什么在临时抑制后打印了两次警告?
Python: why is warning printed twice following temporary suppression?
似乎 temporarily suppressing warnings 重复警告 在上下文管理器之外 重复显示。
示例:
import warnings
def f():
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=Warning)
print("A")
print("B")
warnings.warn("My warning")
f()
f()
输出:
A
B
tmp2.py:10: UserWarning: My warning
warnings.warn("My warning")
A
B
tmp2.py:10: UserWarning: My warning
warnings.warn("My warning")
此外,我给 simplefilter
什么动作和类别似乎并不重要。
另一方面,如果我注释掉上下文 catch_warnings
块,
然后警告只显示一次(按预期)。
为什么?这是一个错误吗?我错过了什么?
似乎 temporarily suppressing warnings 重复警告 在上下文管理器之外 重复显示。
示例:
import warnings
def f():
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=Warning)
print("A")
print("B")
warnings.warn("My warning")
f()
f()
输出:
A
B
tmp2.py:10: UserWarning: My warning
warnings.warn("My warning")
A
B
tmp2.py:10: UserWarning: My warning
warnings.warn("My warning")
此外,我给 simplefilter
什么动作和类别似乎并不重要。
另一方面,如果我注释掉上下文 catch_warnings
块,
然后警告只显示一次(按预期)。
为什么?这是一个错误吗?我错过了什么?