Python中的exit(0)和exit(True)之间有区别吗?

时间:2015-08-02 08:53:05

标签: python-3.x

我不想使用整数,也不记得(即使在几年内)他们的意思。所以我想有一些常量。

这两个电话之间有区别吗?

sys.exit(0)
sys.exit(True)

还是有其他的常数?

我的问题的背景是我的情况是我的脚本的调用者在这两种情况之间有所不同。

2 个答案:

答案 0 :(得分:2)

来自sys.exit()的官方文档:

<强> sys.exit([参数])

退出Python。这是通过引发SystemExit异常来实现的,因此可以接受try语句的finally子句指定的清理操作,并且可以拦截外层的退出尝试。

可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值被贝壳等视为“异常终止”。大多数系统要求它在0-127范围内,否则会产生不确定的结果。有些系统有一个约定,用于为特定的退出代码分配特定的含义,但这些通常是不发达的; Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误。如果传递了另一种类型的对象,则None等效于传递零,并且任何其他对象将打印到stderr并导致退出代码为1.特别是,sys.exit(“some error message”)是一种快速方法发生错误时退出程序。

此处True对应1
退出代码可以是0到127,如文档中所述,您可以选择要分配的退出代码,默认为0,True对应1

答案 1 :(得分:1)

使用sys.exit(True)向用户建议脚本退出并显示错误,因为它不为零:

Ξ /tmp → cat true_exit.py
import sys
sys.exit(True)
Ξ /tmp → python true_exit.py
↑1 /tmp → echo $?
1

如果您想使用True / False而不是退出数字,您可以定义自己的常量或使用True / False:

Ξ /tmp → cat false_exit.py
import sys
sys.exit(False)
Ξ /tmp → python false_exit.py
Ξ /tmp → echo $?
0

请注意,如果使用sysexits.h中定义的相同常量(可能在/usr/include/sysexits.h中的* nix和OS X上可用),它可能对代码的其他维护者有帮助。 / p>