似乎python支持许多不同的命令来停止脚本执行.
我发现的选择是: quit(),exit(),sys.exit(),os._exit()
我错过了吗?他们之间有什么区别?你什么时候用?
iCo*_*dez 693
让我提供一些有关它们的信息:
quit()引发SystemExit幕后异常.
此外,如果你打印它,它会给出一个信息:
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
Run Code Online (Sandbox Code Playgroud)
包含此功能是为了帮助不懂Python的人.毕竟,新手尝试退出Python的最可能的事情之一是输入quit.
然而,quit应该不是在生产代码中使用.这是因为它仅在site加载模块时有效.相反,此功能只应在解释器中使用.
exit()是别名quit(反之亦然).它们共同存在只是为了使Python更加用户友好.
此外,它在打印时也会给出一条消息:
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
Run Code Online (Sandbox Code Playgroud)
然而,像quit,exit被认为是不好的产品代码使用,并应保留在解释使用.这是因为它太依赖于site模块.
sys.exit()SystemExit在后台引发异常.这意味着,它是相同的quit,并exit在这方面.
然而,与那两者不同,sys.exit在生产代码中被认为是好的.这是因为sys模块将始终存在.
os._exit()退出程序而不调用清理处理程序,刷新stdio缓冲区等.因此,它不是退出的标准方式,只应在特殊情况下使用.其中最常见的是由子程序创建的os.fork.
请注意,在给出的四种方法中,只有这一种方法具有独特之处.
总而言之,所有四种方法都退出程序.但是,前两个在生产代码中被认为是不好的,而最后一个是非标准的,脏的方式,仅在特殊情况下使用.因此,如果您想要正常退出程序,请使用第三种方法:sys.exit.
或者,在我看来,甚至更好,你可以直接做sys.exit幕后操作并运行:
raise SystemExit
Run Code Online (Sandbox Code Playgroud)
这样,您无需先导入sys.
然而,这种选择只是一种风格,完全取决于你.
Die*_*Epp 90
函数* quit(),exit()和sys.exit()函数以相同的方式运行:它们引发SystemExit异常.因此,有没有真正的区别,不同之处在于sys.exit()始终可用,但exit()并quit()是唯一可用的,如果site模块是进口的.
该os._exit()函数是特殊的,它立即退出而不调用任何清理函数(例如,它不会刷新缓冲区).这是专为高度专业化的用例而设计的...基本上,只有在os.fork()打电话后的孩子.
使用exit()或quit()在REPL中.
sys.exit()在脚本中使用,或者raise SystemExit()如果您愿意.
使用os._exit()子进程在通话结束后退出os.fork().
所有这些都可以不带参数调用,或者您可以指定退出状态,例如,exit(1)或raise SystemExit(1)退出状态1.请注意,可移植程序仅限于0-255范围内的退出状态代码,如果您raise SystemExit(256)在许多系统上这将被截断,您的进程实际上将以状态0退出.
*实际上,quit()并且exit()是可调用的实例对象,但我认为可以将它们称为函数.
小智 43
os._exit():
exit(0):
exit(1):
sys.exit():
quit():
Basically they all do the same thing, however, it also depends on what you are doing it for.
I don't think you left anything out and I would recommend getting used to quit() or exit().
你会使用sys.exit(),os._exit()主要是你使用大文件或使用python来控制终端.
否则主要使用exit()或quit().
oef*_*efe 40
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()
$
Run Code Online (Sandbox Code Playgroud)
这基本上只是一个利用解释器打印__repr__您在提示符处输入的任何表达式的事实的hack .
| 归档时间: |
|
| 查看次数: |
583655 次 |
| 最近记录: |