使用 exit() 或 quit()¶
ID: py/use-of-exit-or-quit
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- maintainability
Query suites:
- python-security-and-quality.qls
“exit” 和 “quit” “函数” 实际上是 site.Quitter
对象,并在解释器启动时从 site.py
加载。但是,如果解释器使用 -S
标志启动,或者使用自定义 site.py
,那么 “exit” 和 “quit” 可能不存在。
建议¶
将 “exit()” 和 “quit()” 的使用替换为 “sys.exit()”,后者内置于解释器中,并且保证存在。
示例¶
在这个示例中,使用 “exit()”,如果解释器传递了 “-S” 选项,它将失败。
def main():
try:
process()
except Exception as ex:
print(ex)
exit(1)
在这个示例中,使用 “sys.exit()”,无论解释器选项如何,它的行为都相同。
import sys
def main():
try:
process()
except Exception as ex:
print(ex)
sys.exit(1)
参考资料¶
Python 文档:命令行和环境.
Python 文档:特定于站点的配置钩子.