系统学习Python——警告信息的控制模块warnings:常见函数-[warnings.warn]

发布时间:2024年01月15日

分类目录:《系统学习Python》总目录


warnings.warn(message, category=None, stacklevel=1, source=None, \*, skip_file_prefixes=None)常备用于引发警告、忽略或者触发异常。 如果给出category参数,则必须是警告类别类 ;默认为UserWarning。 或者message可为Warning的实例,这时category将被忽略,转而采用message.__class__。 在这种情况下,错误信息文本将是str(message)。 如果某条警告被 警告过滤器 改成了错误,本函数将触发一条异常。 参数stacklevel可供Python包装函数使用,比如下列会让警告指向deprecated_api的调用者,而不是deprecated_api本身的来源(因为后者会破坏警告消息的目的)。:

def deprecated_api(message):
    warnings.warn(message, DeprecationWarning, stacklevel=2)
  • source:发出ResourceWarning的被销毁对象。
  • skip_file_prefixes:用来指明在栈层级计数时哪些栈帧要被忽略。 当常数stacklevel不能适应所有调用路径或在其他情况下难以维护如果你希望警告总是在一个包以外的调用位置上出现这将会很有用处。 如果提供,则它必须是一个字符串元组。 当提供了prefixes前缀时,stacklevel会被隐式地覆盖为max(2, stacklevel)。 要使得一个警告被归因至当前包以外的调用方你可以这样写:
# example/lower.py
_warn_skips = (os.path.dirname(__file__),)

def one_way(r_luxury_yacht=None, t_wobbler_mangrove=None):
    if r_luxury_yacht:
        warnings.warn("Please migrate to t_wobbler_mangrove=.",
                      skip_file_prefixes=_warn_skips)

# example/higher.py
from . import lower

def another_way(**kw):
    lower.one_way(**kw)

这将使得警告同时指向example.lower.one_way()和来自example包以外的调用代码的package.higher.another_way()调用位置。

文章来源:https://blog.csdn.net/hy592070616/article/details/135590710
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。