1. 程式人生 > >Python程式退出: os._exit()和sys.exit()

Python程式退出: os._exit()和sys.exit()

概述

Python程式有兩種退出方式: os._exit() 和 sys.exit()。我查了一下這兩種方式的區別。

os._exit() 會直接將python程式終止,之後的所有程式碼都不會執行。

sys.exit() 會丟擲一個異常: SystemExit,如果這個異常沒有被捕獲,那麼python直譯器將會退出。如果有捕獲該異常的程式碼,那麼這些程式碼還是會執行。

舉個例子

import os

try:
    os._exit(0)
except:
    print('Program is dead.')

這個print是不會列印的,因為沒有異常被捕獲。

import sys

try:
    sys.exit(0)
except:
    print('Program is dead.')
finally:
    print('clean-up')
這裡兩個print都可以列印,因為sys.exit()丟擲了異常。

結論

使用sys.exit()來退出程式比較優雅,呼叫它能引發SystemExit異常,然後我們可以捕獲這個異常做些清理工作。而os._exit()將python直譯器直接退出,後面的語句都不會執行。

一般情況下用sys.exit()就行;os._exit()可以在os.fork()產生的子程序裡使用。

參考: