当前位置: 首页 > 知识库问答 >
问题:

Python exit命令-为什么要使用这么多,每个命令应该在什么时候使用?

翟浩穰
2023-03-14

python似乎支持许多不同的命令来停止脚本执行。
我找到的选择有:quit()exit()sys.exit()os._exit()

我错过了什么吗?它们之间有什么区别?你什么时候用?

共有1个答案

公胤运
2023-03-14

让我提供一些关于它们的资料:

>

  • quit()只是引发SystemExit异常。

    再者,如果你打印出来,它会给出一个信息:

    >>> print (quit)
    Use quit() or Ctrl-Z plus Return to exit
    >>>
    

    包含这个功能是为了帮助不了解Python的人。毕竟,新手退出Python最有可能的一件事就是输入quit

    尽管如此,不应在生产代码中使用quit。这是因为它只有在加载site模块的情况下才起作用。相反,这个函数应该只在解释器中使用。

    exit()quit的别名(反之亦然)。它们存在在一起只是为了使Python对用户更加友好。

    此外,它在打印时也给出了一个信息:

    >>> print (exit)
    Use exit() or Ctrl-Z plus Return to exit
    >>>
    

    但是,与quit一样,exit被认为不适合在生产代码中使用,应该保留在解释器中使用。这是因为它也依赖于site模块。

    sys.exit()还引发systemexit异常。这意味着在这方面它与quitexit相同。

    然而,与这两个不同的是,sys.exit被认为很适合在生产代码中使用。这是因为sys模块始终存在。

    os._exit()退出程序,不需要调用清理处理程序、刷新stdio缓冲区等,因此,它不是一种标准的退出方式,只应在特殊情况下使用。其中最常见的是在os.fork创建的子进程中。

    请注意,在给出的四种方法中,只有这一种方法是独特的。

    总结起来,四种方法都退出程序。然而,前两种方法被认为在生产代码中不适合使用,而最后一种方法是非标准的、肮脏的,只在特殊场景中使用。因此,如果要正常退出程序,请使用第三种方法:sys.exit

    或者,在我看来更好的是,您可以直接html" target="_blank">执行sys.exit在后台执行的操作并运行:

    raise SystemExit
    

    这样,您就不需要首先导入sys

    不过,这个选择只是一个关于风格的,纯粹由你自己决定。

  •  类似资料:
    • 问题内容: 似乎python支持许多不同的命令来停止脚本执行。 我发现的选择是: ,,, 我错过了吗?它们之间有什么区别?你何时会使用它们? 问题答案: 让我给他们一些信息: 在幕后提出异常。 此外,如果你打印它,它将给出一条消息: 包含此功能是为了帮助不了解Python的人。毕竟,新手尝试退出Python的最有可能的事情之一就是输入quit。 然而,quit应该不是在生产代码中使用。这是因为它仅

    • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

    • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

    • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

    • 问题内容: 嗨,我只是想创建一个简单的golang应用程序,它使用以下命令在identi.ca上发布新的凹痕 到目前为止,这是我的代码,恕我直言,这应该起作用,但实际上它不起作用,有人知道如何解决此问题吗? 编辑: 不:我没有收到任何错误消息:/ 问题答案: 不会将整个命令行作为单个参数。您需要将其称为: 您怎么知道是否遇到错误?您无需检查的返回值。 您实际上应该将命令创建与运行分开。这样,您可以

    • 最近,我收到了在代码中使用's的建议,或者在站点上看到了一些使用's的答案--应该是某种容器。但是--我在C++17标准库里找不到类似的东西。 那么这个神秘的是什么?如果它是非标准的,为什么(或何时)使用它是个好主意?