python 中 os._exit(), sys.exit(), exit() 的區別是什麼?

請高手指教,這個問題。


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 常用的標準庫以及第三方庫有哪些?

TAG:Python | Python標準庫 |