對於一個簡單的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-爲什麼這麼多,什麼時候該被使用 –