python 中 os._exit(), sys.exit(), exit() 的區別是什麼?
01-04
請高手指教,這個問題。
1. sys.exit(n) 退出程序引發SystemExit異常, 可以捕獲異常執行些清理工作. n默認值為0, 表示正常退出. 其他都是非正常退出. 還可以sys.exit("sorry, goodbye!"); 一般主程序中使用此退出.2. os._exit(n), 直接退出, 不拋異常, 不執行相關清理工作. 常用在子進程的退出.
3. exit()/quit(), 跑出SystemExit異常. 一般在互動式shell中退出時使用.
補充一下 Joker Qyou 的答案。
os._exit() 調用 C 語言的 _exit() 函數。__builtin__.exit 是一個 Quitter 對象,這個對象的 __call__ 方法會拋出一個 SystemExit 異常。os._exit() 直接退出 Python 解釋器,其後的代碼都不執行。sys.exit() 引發一個 SystemExit 異常,沒有捕獲這個異常,會直接退出;捕獲這個異常可以做一些額外的清理工作。exit() 跟 C 語言等其他語言的 exit() 應該是一樣的。
The difference between exit() and sys.exit() in python?
一般來說os._exit() 用於在線程中退出
sys.exit() 用於在主線程中退出。
推薦閱讀:
※Python3.3和Python3.2的區別在哪裡?
※為什麼在Python定義函數中想使用return語句返回一個list卻沒有任何返回值?
※為什麼可以像執行系統命令一樣執行 Python 的包,如 scrapy crawl xxx?
※Python3.6中sequence的 +=與 extend()有何區別?後者可以在tuple中使用?
※Python 常用的標準庫以及第三方庫有哪些?