Python中exit(0)和exit(1)之间的区别


167

exit(0)exit(1)Python 和有什么不一样?

我尝试环顾四周,但没有在这些线上找到具体问题。如果已经回答,则链接就足够了。


9
这是exit()docs中的链接,这使我永远无法找到。
Ryne Everett


刚意识到有exit(0)一个在此问题中讨论的内容,还有一个带下划线的内容_exit(0),在
cardamom

这些代码的优点是可以直接在包装器的if语句中使用它们bash,因此无论Python程序是否成功或是否引发非零状态,都可以采取进一步的措施。
SDsolar '18

奇怪,如果0为False和1为True在Python中,你会觉得这些数字就意味着相反的
莫妮卡Heddneck

Answers:


248

0和1是退出代码。

exit(0) 意味着干净出口,没有任何错误/问题

exit(1) 表示存在一些问题/错误/问题,这就是程序退出的原因。

这不是特定于Python的,非常普遍。非零退出代码被视为异常退出,有时,错误代码指示问题所在。错误代码为零表示成功退出。

这对于其他程序,shell,调用方等很有用,以了解您的程序发生了什么并相应地进行。


10
那么exit(-1)呢?
Faizan 2014年

16
@Faizan:退出代码在Unix上是8位值。如果您调用exit(-1),则该值等于exit(255)-最低有效8位将中继到调用程序(shell或其他程序)。
Jonathan Leffler

4
请注意,根据docsexit()是由site模块添加的,不应由程序使用。相反,如果您不想导入其他模块,请使用sys.exit(),甚至使用raise SystemExit
daviewales

2
由于来自Unix / Linux的退出代码,我一直认为在Python条件下0为True,1为False。
vlyalcin

19

它确定程序结束运行时的退出状态(通常为0表示成功,而1表示错误)。

它不是Python独有的,确切的效果取决于您的操作系统以及该程序的调用方式(尽管在99%的时间中,如果您仅运行Python脚本,那都没有关系)。


12

所有C程序(包括Python)的标准约定用于exit(0)表示成功,exit(1)或其他任何非零值(在1..255范围内)表示失败。超出0..255范围的任何值都将以256为模(退出状态存储在8位值中)。有时,它将被视为已签名(因此,您可能会看到-128,-127等),但更常见的是将其视为未签名。

此状态可用于调用Python的代码。尽管不同平台上的非零退出状态的含义可能有所不同,但该约定适用于所有平台。


7

您传递给该exit()函数的数字只是您程序的返回码,该码已提供给操作系统。从程序的角度来看,没有什么区别:在两种情况下执行都将结束,并且提供给函数的值将提供给OS。但是某些工具和脚本会考虑程序的退出代码。大多数工具成功时返回0,非零则表示错误。

因此,如果要从脚本,自动化工具或考虑返回代码的其他某些软件(例如IDE)运行程序,则必须注意返回的内容。

如有疑问,只需返回0即可表示一切正常。


6

exit(0):这将导致程序退出并成功终止。

exit(1):这将导致程序以系统特定的含义退出。

在许多系统上,exit(1)发出某种故障信号,但是不能保证。

我记得,C标准仅识别三个标准出口值:

  • EXIT_SUCCESS -成功终止
  • EXIT_FAILURE -终止失败
  • 0 - 和...一样 EXIT_SUCCESS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.