【问题标题】:Difference between exit(0) and exit(1) in PythonPython中exit(0)和exit(1)的区别
【发布时间】:2012-03-14 15:00:37
【问题描述】:

exit(0)exit(1) 在 Python 中的区别是什么?

我试着环顾四周,但没有找到关于这些行的具体问题。如果已经回答,一个链接就足够了。

【问题讨论】:

标签: python exit-code


【解决方案1】:

0 和 1 是退出代码。

exit(0) 表示干净退出,没有任何错误/问题

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

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

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

【讨论】:

  • 那么 exit(-1) 呢?
  • @Faizan:退出代码是 Unix 上的 8 位值。如果您调用exit(-1),则该值等效于exit(255) - 最低有效 8 位被中继到调用程序(shell 或其他)。
  • 注意,根据the docsexit()site模块添加的,不应被程序使用。相反,如果您不想导入另一个模块,请使用sys.exit(),甚至raise SystemExit
  • 由于来自 Unix/Linux 的退出代码,我认为在 Python 条件下 0 是 True 而 1 是 False 值。
  • 任何非零值都被 shell 等视为“异常终止”。大多数系统要求它在 0-127 的范围内,否则会产生未定义的结果。一些系统有为特定退出代码分配特定含义的约定,但这些通常不发达; Unix 程序 ... 使用 2 表示命令行语法错误,使用 1 表示所有其他错误。如果传递了另一种类型的对象,则 None 等效于传递零,并且任何其他对象都会打印到 stderr 并导致退出代码 1。sys module docs
【解决方案2】:

这决定了程序运行结束时的exit status(通常,0 表示成功,1 表示错误)。

这不是 Python 独有的,确切的效果取决于您的操作系统和程序的调用方式(尽管 99% 的情况下,如果您只是在运行 Python 脚本,那没关系)。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      因此,如果您的程序将通过脚本、自动化工具或其他考虑返回代码的软件(例如 IDE)运行,您必须小心返回的内容。

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

      【讨论】:

        【解决方案5】:

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

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

        在许多系统上,exit(1) 表示某种故障,但是有 不能保证。

        我记得,C 标准只承认三个标准出口 价值观:

        • EXIT_SUCCESS -- 成功终止
        • EXIT_FAILURE -- 终止失败
        • 0 -- 同 EXIT_SUCCESS

        【讨论】:

          【解决方案6】:

          exit(0) 被抛出 我试图在我的代理上运行一些脚本(如 Charles/Proxyman)。只需关闭那些劫持您的网络的代理

          【讨论】:

            猜你喜欢
            • 2014-05-01
            • 2011-09-23
            • 2016-12-08
            • 2021-05-20
            • 1970-01-01
            • 1970-01-01
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多