在 Python 脚本的末尾使用 sys.exit(0) 是一种好习惯吗?

tws*_*wsh 5 shell python-3.x

我正在学习编写 Python 3 脚本以在 shell 中使用。我有一本教科书似乎说这样的脚本应该总是sys.exit(0)用来结束脚本并返回代码 0。这真的有必要吗?

例如,假设我运行以下脚本python3 foo.py

import sys
sys.stdout.write('Hello world\n')
Run Code Online (Sandbox Code Playgroud)

如果我再做echo $?响应是'0'。因此,脚本确实以代码 0 退出,并且添加sys.exit(0)为最后一行将是多余的。

我应该放弃它,还是它仍然是一个好习惯?

Eth*_*man 8

sys.exit(0)如果没有发现问题,则无需在脚本末尾使用,这不是一个好的做法。

如果您需要因错误而提前退出,并且您不关心确切的非零退出代码,则可以使用:

raise SystemExit('error message here')
Run Code Online (Sandbox Code Playgroud)

该消息将被打印,返回代码将为 1。否则,print()该消息并使用:

sys.exit(returncode)
Run Code Online (Sandbox Code Playgroud)

以获得不同的返回码。