16. 附錄¶
16.1. 互動模式¶
互動式 REPL 有兩種變體。經典的、基本的直譯器在所有平臺上都受支援,並具有最小的行控制功能。
在 Windows 或帶有 curses
支援的類 Unix 系統上,自 Python 3.13 以來,預設使用新的互動式 shell。它支援顏色、多行編輯、歷史瀏覽和貼上模式。要停用顏色,請參閱 控制顏色 以獲取詳細資訊。功能鍵提供了一些額外的功能。F1 進入互動式幫助瀏覽器 pydoc
。F2 允許瀏覽命令列歷史記錄,而無需輸出或 >>> 和 … 提示符。F3 進入“貼上模式”,這使得貼上大塊程式碼更容易。按 F3 返回常規提示符。
使用新的互動式 shell 時,輸入 exit 或 quit 退出 shell。這些命令後無需新增呼叫括號。
如果不需要新的互動式 shell,可以透過 PYTHON_BASIC_REPL
環境變數停用它。
16.1.1. 錯誤處理¶
當發生錯誤時,直譯器會列印錯誤訊息和堆疊跟蹤。在互動模式下,它會返回到主提示符;當輸入來自檔案時,在列印堆疊跟蹤後,它會以非零退出狀態退出。(在 try
語句的 except
子句中處理的異常在此上下文中不屬於錯誤。)某些錯誤是無條件致命的,會導致以非零退出狀態退出;這適用於內部不一致和一些記憶體不足的情況。所有錯誤訊息都寫入標準錯誤流;執行命令的正常輸出寫入標準輸出。
在主提示符或次提示符處鍵入中斷字元(通常是 Control-C 或 Delete)會取消輸入並返回到主提示符。[1] 在命令執行期間鍵入中斷會引發 KeyboardInterrupt
異常,該異常可以透過 try
語句處理。
16.1.2. 可執行 Python 指令碼¶
在類 BSD 的 Unix 系統上,Python 指令碼可以直接執行,就像 shell 指令碼一樣,方法是在指令碼的開頭放置以下行:
#!/usr/bin/env python3
(假設直譯器在使用者的 PATH
中),併為檔案賦予可執行模式。#!
必須是檔案的前兩個字元。在某些平臺上,第一行必須以 Unix 風格的行尾符 ('\n'
) 結束,而不是 Windows ('\r\n'
) 行尾符。請注意,井號或磅號字元 '#'
在 Python 中用於開始註釋。
可以使用 chmod 命令為指令碼賦予可執行模式或許可權。
$ chmod +x myscript.py
在 Windows 系統上,沒有“可執行模式”的概念。Python 安裝程式會自動將 .py
檔案與 python.exe
關聯起來,以便雙擊 Python 檔案即可將其作為指令碼執行。副檔名也可以是 .pyw
,在這種情況下,通常出現的控制檯視窗會被抑制。
16.1.3. 互動式啟動檔案¶
當您互動式使用 Python 時,每次啟動直譯器時執行一些標準命令通常會很方便。您可以透過將名為 PYTHONSTARTUP
的環境變數設定為包含啟動命令的檔名來實現此目的。這類似於 Unix shell 的 .profile
功能。
此檔案僅在互動式會話中讀取,當 Python 從指令碼讀取命令時不會讀取,並且當 /dev/tty
作為命令的顯式源時也不會讀取(否則其行為類似於互動式會話)。它在與互動式命令執行相同的名稱空間中執行,因此它定義或匯入的物件可以在互動式會話中無需限定地使用。您也可以在此檔案中更改提示符 sys.ps1
和 sys.ps2
。
如果您想從當前目錄讀取一個額外的啟動檔案,您可以在全域性啟動檔案中使用類似 if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())
的程式碼進行程式設計。如果您想在指令碼中使用啟動檔案,則必須在指令碼中明確執行此操作。
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. 自定義模組¶
Python 提供了兩個鉤子來讓您自定義它:sitecustomize 和 usercustomize。要了解其工作原理,您首先需要找到使用者 site-packages 目錄的位置。啟動 Python 並執行以下程式碼:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
現在您可以在該目錄中建立一個名為 usercustomize.py
的檔案,並在其中放入您想要的任何內容。它將影響 Python 的每次呼叫,除非使用 -s
選項啟動以停用自動匯入。
sitecustomize 的工作方式相同,但通常由計算機管理員在全域性 site-packages 目錄中建立,並在 usercustomize 之前匯入。有關更多詳細資訊,請參閱 site
模組的文件。
腳註