python似乎支持许多不同的命令来停止脚本执行。
我发现的选择是:quit()
,exit()
,sys.exit()
,os._exit()
Python退出命令 - 为什么这么多,什么时候应该使用?
我错过了任何? 他们之间有什么区别?你什么时候使用每个?
python似乎支持许多不同的命令来停止脚本执行。
我发现的选择是:quit()
,exit()
,sys.exit()
,os._exit()
Python退出命令 - 为什么这么多,什么时候应该使用?
我错过了任何? 他们之间有什么区别?你什么时候使用每个?
os._exit()
的:
exit(0)
:
exit(1)
:
sys.exit()
:
quit()
:
基本上他们都做同样的事情,但是,它也取决于你正在做什么。
我不认为你遗漏了任何东西,我会建议习惯quit()
或exit()
。
如果您使用的是大文件或正在使用python来控制终端,您将主要使用sys.exit()
和os._exit()
。其他主要使用exit()
或quit()
。
功能*quit()
,exit()
,并以同样的方式sys.exit()
功能:它们提高SystemExit
例外。所以没有真正的区别,除了sys.exit()
始终可用,但exit()
和quit()
仅在导入site
模块时可用。
os._exit()
函数是特殊的,它立即退出而不调用任何清理函数(例如,它不刷新缓冲区)。这是专为高度专业化的用例而设计的...基本上,只有在os.fork()
调用后的孩子。
使用exit()
或REPL quit()
。
如果您愿意,可以在脚本中使用sys.exit()
,或者使用raise SystemExit()
。
使用os._exit()
让子进程在致电os.fork()
后退出。
*其实,quit()
和exit()
是可调用的实例对象,但我认为这没关系给他们打电话的功能。
让我给他们一些信息:
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
异常。这意味着它在这方面与quit
和exit
相同。
不像那两个,但是sys.exit
在生产代码中被认为是很好的。这是因为sys
模块将一直存在。
os._exit
退出程序而不调用清理处理程序,刷新stdio缓冲区等。因此,这不是一种标准的退出方式,只能在特殊情况下使用。其中最常见的是由os.fork
创建的子进程。
请注意,在给出的四种方法中,只有这个方法是独特的。
总结来说,所有四种方法都退出程序。然而,前两种方法在生产代码中被认为是不好的,而最后一种方法是一种非标准,肮脏的方法,只能在特殊情况下使用。因此,如果您想正常退出程序,请使用第三种方法:sys.exit
。
或者说,在我看来甚至更好,你可以做直接sys.exit
做幕后是什么,然后运行:
raise SystemExit
这样,你不需要导入sys
第一。
但是,这种选择只是一种风格,完全取决于你。
我相信这个答案值得一个复选标记。 –
但是在ipython shell中''quit''和'exit'退出shell而'sys.exit'没有。 – Lee
sys.exit
是退出的规范方式。
内部sys.exit
只是提高SystemExit
。然而,拨打sys.exit
比直接拨打SystemExit
更具惯用。
os.exit
是一个底层的系统调用,它直接退出而不调用任何清理处理程序。
quit
和exit
仅用于提供Python提示的简单方法。这适用于意外进入Python提示的新用户或用户,并且不想知道正确的语法。他们很可能会尝试打字exit
或quit
。虽然这不会退出解释,它至少发出一条消息,告诉他们一条出路:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
这实质上就是一种利用解释器打印您输入的任何表达的__repr__
事实黑客攻击在提示。
为什么这么多的反对票?看起来像很好的信息。 –
我编辑试图清理它。 @PietroSperoni也许这是缺乏代码格式。也许人们觉得措辞有点草率(这是我读过的印象)。 –