在很多代码中我们经常能看到一些代码能得到我们想要的结果,但是还会出现一些警告提示,这种情况一般出现情况会有好几种,下面就来细数一下所有类型警告和处理类。
一、警告类
首先是基类Warning,是警告基类。我们在IDE中一般只会看到他的子类:
DeprecationWarning # 有关已弃用功能的警告的基类
PendingDeprecationWarning # 有关不推荐使用功能的警告的基类
RuntimeWarning # 有关可疑的运行时行为的警告的基类
SyntaxWarning # 关于可疑语法警告的基类
UserWarning # 用户代码生成警告的基类
FutureWarning # 有关已弃用功能的警告的基类
ImportWarning # 关于模块导入时可能出错的警告的基类
UnicodeWarning # 与Unicode相关的警告的基类
BytesWarning # 与bytes和bytearray相关的警告的基类
ResourceWarning # 与资源使用相关的警告的基类。被默认警告过滤器忽略。
二、实例代码处理方法
捕获警告,在退出上下文时恢复警告过滤器和 showwarning() 函数功能。如果 record 参数是 False (缺省值),则上下文管理器在入口处返回 None。如果 record 是 True,则返回一个列表,该列表元素为 showwarning() 函数所见的对象,列表中的每个元素都具有与 showwarning() 的参数具有相同名称的属性。
import warnings
warnings.simplefilter("always")
def fxn():
warnings.warn("this is a warning", Warning)
with warnings.catch_warnings():
warnings.simplefilter("ignore")
fxn()
with warnings.catch_warnings(Warning):
warnings.warn("this is a warning2", Warning)
warnings.warn("this is a warning3", Warning)
def fxn2():
warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings(record=True) as w:
# Cause all warnings to always be triggered.
warnings.simplefilter("always")
# Trigger a warning.
fxn2()
# Verify some things
assert len(w) == 1
assert issubclass(w[-1].category, DeprecationWarning)
assert "deprecated" in str(w[-1].message)
© 版权声明
THE END
暂无评论内容