sys-exit-alias (PLR1722)
源自 Pylint 代码检查工具。
有时提供修复。
作用
检查 exit()
和 quit()
的使用情况。
为什么这不好?
exit
和 quit
来自 site
模块,该模块通常在启动时自动导入。但是,不能保证它会被导入,因此使用这些函数可能会导致运行时出现 NameError
。一般来说,这些常量旨在交互式解释器中使用,而不是在程序中使用。
首选 sys.exit()
,因为可以保证 sys
模块在所有上下文中都存在。
修复安全性
此修复总是不安全的。当用 sys.exit
替换 exit
或 quit
时,行为可能会发生以下变化
-
如果代码在未导入
site
模块的环境中运行(例如,使用python -S
),则原始代码将引发NameError
,而修复后的代码将正常执行。 -
site.exit
和sys.exit
处理元组参数的方式不同。site.exit
将元组视为常规对象,并始终返回退出代码 1,而sys.exit
会解释元组内容以确定退出代码:一个空元组 () 会导致退出代码 0,而像 (2,) 这样的单元素元组使用该元素的值 (2) 作为退出代码。
示例
建议改为