Python 中結束程式的 3 種方法
### 快速鏈接
⭐使用 quit() 或 exit()
⭐使用sys.exit()
⭐使用 os._exit()
⭐您應該使用哪一種方法來終止Python程式?
熟練地終止軟體應用程式在各種情況下都具有重要意義。舉例來說,考慮到一個人正在設計一款基本的遊戲,可以根據特定的使用者輸入或實現預先定義的先決條件來退出。深入研究導致 Python 腳本停止的三種方法之間的差異。
使用 quit() 或 exit()
人們可以利用Python腳本的固有函數之一來結束Python腳本,即「quit()」或「exit()」。呼叫這些命令中的任何一個後,程式將停止執行。
quit()
和 exit()
函數都有相同的目的;使用任何一種主要是基於個人喜好的個人選擇問題,而不是功能上的任何顯著差異。
「為了結束 Python 腳本,可以使用 quit() 函數。
for num in range(10):
if num == 9:
quit()
print(num)
提供的程式碼迭代 0 到 8 範圍內的數字,並在控制台中按順序顯示它們。當遇到值 9 時,程式終止其操作。此外,可以利用「quit()」函數來停止Python整合開發和學習環境(IDLE)的執行。該平台使用戶能夠互動式地執行Python腳本,從而提供動手編程體驗的機會。
應該注意的是,quit()
和exit()
都依賴site
模組的功能,因此可能不適合在生產環境中使用。相反,“sys.exit()”提供的替代方法通常被認為在這種情況下更合適。
使用 sys.exit()
在 Python 腳本中使用「sys.exit()」函數時,會引發「SystemExit」異常的實例。此異常支援確定退出代碼的可選參數,預設值為 0。此外,它允許傳遞對象,該對像在執行時將產生退出代碼 1 並在標準上顯示對象的字串表示形式錯誤流。
import sys # Remember to include this statement at the top of the module
for num in range(10):
if num == 5:
sys.exit("You exited the program")
print(num)
程式的結果輸出應包含以下格式:
與 Python 內建 sys 模組中的 quit 和 exit 方法提供的功能類似,sys.exit() 方法是另一種優雅終止 Python 腳本的方法。就像它的對應項一樣,當呼叫時,它會觸發引發“SystemExit”異常。這裡顯著的差異在於,呼叫「sys.exit()」或「raise SystemExit()」都將接受一個可選參數,以便在必要時提供附加資訊。
為了全面了解所提供程式碼的功能,建議您熟悉腳本中使用的基本 Python 函數。
使用 os._exit()
退出程式的第三種方法涉及利用特殊的「os._exit()」方法,該方法可讓您提供指定退出狀態碼的選用參數。此方法駐留在 os 模組內,並立即終止進程,而不執行通常與 Python 程式終止相關的常規清理任務。
由於此函數退出時不執行正常清理,因此您應該僅在特殊情況下使用它。根據 Python 文檔,一個很好的例子是 fork 之後的子程序(使用 os.fork() 建立的新進程)。
import os
import sys
def child_process():
print("Child process is running.")
os._exit(0)
def main():
print("Parent process is running.")
try:
pid = os.fork()
if pid == 0:
# Code in the child process
child_process()
else:
# Code in the parent process
print(f"Parent process is continuing with child process PID: {pid}")
except OSError as e:
print(f"Fork failed: {e}")
sys.exit(1)
print("Parent process is done.")
if __name__ == "__main__":
main()
上面的程式碼將輸出以下內容:
在 Python 中應該使用哪一種方法來終止程式?
Python 提供了多種終止程式的方法,儘管其中許多最終會導致程式執行停止。這些替代方案可以減輕在使用 Python 開發軟體時選擇適當的方法來結束程式相關的認知負擔,特別是在學習語言的初始階段。
總之,在終止 Python 程式時,建議使用 sys.exit() 函數,因為它可以有效地產生「SystemExit」例外情況以及可選的退出程式碼,以無縫停止軟體的操作。
在與 Python Read-Eval-Print Loop (REPL) 互動時,建議使用 quit() 和 exit() 方法。但是,建議不要在生產環境中使用這些方法,因為它們依賴“site”模組,而無法始終保證其可用性。此外,除非處理產生新進程的程式碼,否則很少使用 os._exit() 方法。