对于一个简单的python脚本,它不会启动任何线程或分支任何进程,简单地让执行到达脚本的末尾并显式调用quit(),exit()或sys.exit()之间有什么区别?Python:显式退出和简单地让执行到达文件末尾有什么区别?
即什么是我问这个,因为我一直有在脚本终止一些奇怪的垃圾收集问题
def main():
# do some stuff
print("Done doing stuff")
if __name__ == '__main__':
main()
和
import sys
def main():
# do some stuff
print("Done doing stuff")
# explicit exit
sys.exit()
if __name__ == '__main__':
main()
之间的差值(从__del__
引发的异常显然是由于清理事情的顺序),而不需要明确的exit()
调用,并且添加明确的exit()
似乎可以纠正这些问题。或者至少在拨打exit()
后打印出的这些例外情况都不会被打印出来,也许他们只是被沉默了。
从我争取的'sys.exit()'允许“终于”条款,其中清理功能是内置的一些尝试块被激活提出例外,从而给予“更清洁”的退出。 – Uvar
https://docs.python.org/3/library/sys.html#sys.exit“这是通过引发SystemExit异常实现的,因此try语句的finally子句指定的清理操作得到遵守”。另一个有趣的注意事项是清理时捕获的缓冲错误,导致退出代码变为120 – BoboDarph
我相信这应该回答您的问题:https://stackoverflow.com/questions/19747371/python-exit-commands-为什么这么多,什么时候该被使用 –