我不喜欢使用整数,并且无法记住它们的含义(即使是多年之后)。因此,我想要为它们设置常量。
这两个调用有什么区别吗?
sys.exit(0)
sys.exit(True)
还是有其他常量吗?
我的问题背景是,我在一个情况下脚本的调用者与另一个情况下不同。
我不喜欢使用整数,并且无法记住它们的含义(即使是多年之后)。因此,我想要为它们设置常量。
这两个调用有什么区别吗?
sys.exit(0)
sys.exit(True)
还是有其他常量吗?
我的问题背景是,我在一个情况下脚本的调用者与另一个情况下不同。
使用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
以下是sys.exit()的官方文档:
sys.exit([arg])
退出 Python。这是通过引发 SystemExit 异常来实现的,因此会执行 try 语句中 finally 子句指定的清理操作,并且可以在外层拦截退出尝试。
可选参数 arg 可以是一个整数,表示退出状态(默认为零),或者是另一种类型的对象。如果它是一个整数,则零被认为是“成功终止”,任何非零值都被 shells 等视为“异常终止”。大多数系统要求它在 0-127 范围内,并产生未定义的结果。一些系统有一个约定,将特定的退出代码赋予特定的含义,但这些通常不太完善;Unix 程序通常使用 2 表示命令行语法错误,使用 1 表示其他所有类型的错误。如果传递了另一种类型的对象,则 None 相当于传递零,任何其他对象都会被打印到 stderr 并导致退出代码为 1。特别地,sys.exit("some error message") 是在出现错误时快速退出程序的方法。
这里的True
对应于1
。
True
将对应于1
。
True == 1
(真等于1),而且issubclass(bool, int)
(布尔类型是整型的子类)。程序的退出代码/状态可以被调用者使用。 - falsetruexit(0)
和sys.exit(0)
之间有什么区别吗? - hiro protagonistTrue
的整数值不是1吗? - Lasse V. Karlsen0
代表什么”还是“我不知道从进程返回0
意味着什么”。在这两种情况下,考虑到多年的使用,这似乎表明存在学习困难。如果是1440
或16777215
,我可以理解,但是零? :-) - paxdiablo