网易首页 > 网易号 > 正文 申请入驻

Python 库手册:warnings 警告信息模块

0
分享至

Python 的 warnings 模块用于发出警告信息而不中断程序运行,是一种比异常(raise)更温和的提示方式。通过它,开发者可以提示用户潜在问题、不推荐使用的接口(deprecated)、未来将移除的特性等,同时保留程序的正常执行流程。

常见应用场景:

(1)提醒用户注意代码中的非致命问题。

(2)标记已废弃但仍可用的函数或方法。

(3)替代调试语句(如 print)发出开发提示。

(4)运行时检测配置不当、参数不规范等问题。

(5)框架/库开发者用于发出 API 使用警告。

◆ ◆

核心概念

1、警告类型(Warning Classes)

所有警告均继承自 Warning 类,常见的子类包括:

Warning:所有警告的基类。

UserWarning:用户代码触发的通用警告。

DeprecationWarning:表示某功能已弃用,将来会删除。

SyntaxWarning:语法层面的问题。

RuntimeWarning:运行时可疑行为。

FutureWarning:表示未来行为会更改。

ImportWarning:模块导入相关警告。

ResourceWarning:资源使用(如文件、socket)相关问题。

2. 警告过滤器(Warning Filter)

警告信息的输出行为(是否显示、忽略、提升为异常)由过滤器规则控制,可通过:

代码设置(如 warnings.filterwarnings(...))

环境变量(如 PYTHONWARNINGS=ignore)

命令行参数(如 python -W ignore script.py)

◆ ◆

应用举例

例 1:基本用法,发出一条用户警告

import warnings

def unsafe_func():
    warnings.warn("这是一个不建议使用的函数", UserWarning)

unsafe_func()

例 2:标记函数为已弃用(DeprecationWarning)

import warnings

def old_function():
    warnings.warn("该函数已弃用,请改用 new_function()", DeprecationWarning)

old_function()  # 默认不会显示 DeprecationWarning

注意:DeprecationWarning 默认不会在普通用户代码中显示,建议开发时通过如下方式强制显示。

import warnings
warnings.simplefilter("always", DeprecationWarning)

例 3:将警告提升为异常(调试用)

import warnings

warnings.simplefilter("error")  # 所有警告都变为异常

try:
    warnings.warn("将警告作为异常处理")
except Warning as e:
    print("捕获到异常:", e)

例 4:临时抑制警告(上下文管理器)

import warnings

with warnings.catch_warnings():
    warnings.simplefilter("ignore")  # 忽略本块内的警告
    warnings.warn("这条警告不会显示")

例 5:查看当前的警告过滤规则

import warnings

print(warnings.filters)

◆ ◆

常用函数速览

catch_warnings(record=False)

上下文管理器,用于临时更改警告行为。

参数

record:若为 True,返回警告记录列表

返回:上下文管理器对象

filterwarnings(action, category=Warning, module='', lineno=0, append=False)

添加或更新一个警告过滤规则。

参数

action:控制行为(如 "ignore", "always", "error")

category:警告类型(如 UserWarning)

module:过滤指定模块

lineno:过滤指定代码行

append:是否将规则追加(默认插入到最前)

返回:无

formatwarning(message, category, filename, lineno, line=None)

格式化警告信息为字符串(用于自定义输出)。

参数:警告内容、类型、文件、行号等

返回:格式化字符串

resetwarnings()

清空所有用户设置的警告过滤器

返回:无

showwarning(message, category, filename, lineno, file=None, line=None)

输出警告(可重定义以重定向输出)。

返回:无

备注:可重写该函数来自定义打印行为

simplefilter(action, category=Warning)

设置全局过滤器(简单快捷)。

参数

action:"ignore"、"default"、"always"、"error" 等

category:警告类型

返回:无

warn(message, category=None, stacklevel=1, source=None)

触发一条警告。

参数

message:警告信息

category:指定类型(默认 UserWarning)

stacklevel:指定源头的调用栈层级

返回:无

◆ ◆

补充说明

1、建议在库/框架开发中使用 warnings.warn() 替代 print() 以告知用户正确用法。

2、使用 stacklevel=2 可将警告定位到调用者,而非内部函数。

3、若需将警告写入日志文件,可重写 warnings.showwarning() 或结合 logging.captureWarnings(True) 使用。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
东风日产高管回应李想朋友圈喊话:尊重每一家同行,包括理想汽车

东风日产高管回应李想朋友圈喊话:尊重每一家同行,包括理想汽车

金融界
2026-04-11 20:56:16
穆萨维伊将访华

穆萨维伊将访华

环球时报国际
2026-04-10 16:42:13
万斯对阵加利巴夫:美伊直接会谈2小时后暂停,结果未出

万斯对阵加利巴夫:美伊直接会谈2小时后暂停,结果未出

桂系007
2026-04-11 23:57:00
定了!公积金提取限制全面取消,2026年4月1日起执行

定了!公积金提取限制全面取消,2026年4月1日起执行

甜到你心坎
2026-04-10 06:36:20
CBA历史最差!榜尾大战四川惨负天津吞37连败 跨赛季42连败

CBA历史最差!榜尾大战四川惨负天津吞37连败 跨赛季42连败

醉卧浮生
2026-04-11 21:15:44
留学生入境被拒!华大博士带13岁儿子被当场遣返,机场爆发抗议...

留学生入境被拒!华大博士带13岁儿子被当场遣返,机场爆发抗议...

新浪财经
2026-04-11 06:08:22
百万豪车陪葬后续:死者身份披露,官方介入处置,目击者透露更多

百万豪车陪葬后续:死者身份披露,官方介入处置,目击者透露更多

离离言几许
2026-04-11 16:34:13
百万豪车被陪葬后续:死者身份披露,官方通报处理结果,家属回应

百万豪车被陪葬后续:死者身份披露,官方通报处理结果,家属回应

小娱乐悠悠
2026-04-11 10:05:05
差点被骗600万美元!华人4000万豪宅挂牌出售,骗子拿着“2000万支票”上门…

差点被骗600万美元!华人4000万豪宅挂牌出售,骗子拿着“2000万支票”上门…

华人生活网
2026-04-11 04:55:36
随着苏州1-0,盐城2-0,无锡3-1,常州3-0,苏超最新积分榜出炉

随着苏州1-0,盐城2-0,无锡3-1,常州3-0,苏超最新积分榜出炉

俯身冲顶
2026-04-11 22:17:25
48岁拉尔萨魅力不减,17岁年龄差,让NBA球星赌上人生与家庭

48岁拉尔萨魅力不减,17岁年龄差,让NBA球星赌上人生与家庭

罗氏八卦
2026-04-11 18:00:03
开拓者大胜快船,杨瀚森打出五零之光表现,小卡很绝望

开拓者大胜快船,杨瀚森打出五零之光表现,小卡很绝望

姜大叔侃球
2026-04-11 13:28:34
高市没想到,对华关系降级当天,中方反应迅速,53条航线全取消

高市没想到,对华关系降级当天,中方反应迅速,53条航线全取消

共工之锚
2026-04-11 00:54:51
郑丽文明确两岸统一方向,台10位县市长发声,蒋万安卢秀燕均表态

郑丽文明确两岸统一方向,台10位县市长发声,蒋万安卢秀燕均表态

娱乐小可爱蛙
2026-04-11 11:06:06
马筱梅自爆嫁汪小菲是因为她是吃货,从未想过贪图豪车和豪宅

马筱梅自爆嫁汪小菲是因为她是吃货,从未想过贪图豪车和豪宅

秋别离
2026-04-11 20:28:39
仅隔三天!华为恢复员工主动离职N+1补偿

仅隔三天!华为恢复员工主动离职N+1补偿

鞭牛士
2026-04-11 07:53:39
申花完胜德比战!媒体人热议:海港赔了夫人又折兵,短期难乐观

申花完胜德比战!媒体人热议:海港赔了夫人又折兵,短期难乐观

奥拜尔
2026-04-11 21:53:25
2026年菲尔兹奖结果已定,将在7月份颁奖,北大校友圈传来好消息

2026年菲尔兹奖结果已定,将在7月份颁奖,北大校友圈传来好消息

东东趣谈
2026-04-11 21:18:19
中央公布重要文件,2026养老金或再调整65岁以上能多涨钱吗?

中央公布重要文件,2026养老金或再调整65岁以上能多涨钱吗?

云鹏叙事
2026-04-11 17:01:01
重庆一三甲医院被通报:过度诊疗、过度检查、重复开药

重庆一三甲医院被通报:过度诊疗、过度检查、重复开药

鬼菜生活
2026-04-11 20:47:04
2026-04-12 01:12:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

半夜被燃烧瓶砸醒,OpenAI CEO发文反思

头条要闻

霍尔木兹海峡突传大消息 特朗普最新发声

头条要闻

霍尔木兹海峡突传大消息 特朗普最新发声

体育要闻

换帅之后,他们从降级区冲到升级区

娱乐要闻

郑钧回应儿子走路:会监督他挺直腰板

财经要闻

从日本翻身看:这次谁能扛住高油价?

汽车要闻

焕新极氪007/007GT上市 限时19.39万起

态度原创

本地
房产
手机
亲子
公开课

本地新闻

12吨巧克力有难,全网化身超级侦探添乱

房产要闻

土地供应突然暴跌!2026海口楼市,格局大变!

手机要闻

全球首款阔折叠卖爆!华为Pura X一年出货量超150万台

亲子要闻

拥有超绝性价比的一套家居服,唯一的缺点就是预售,我等了一个礼拜才发货。 杨雪呀

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版