2. 使用 Python 直譯器

2.1. 呼叫直譯器

Python 直譯器通常安裝在那些可用的機器上的 /usr/local/bin/python3.13 中;將 /usr/local/bin 放入你的 Unix shell 的搜尋路徑中,就可以透過輸入以下命令來啟動它

python3.13

到 shell。[1] 由於直譯器所在的目錄的選擇是一個安裝選項,因此可能存在其他位置;請諮詢你當地的 Python 專家或系統管理員。(例如,/usr/local/python 是一個常見的替代位置。)

在您從 Microsoft Store 安裝了 Python 的 Windows 機器上,可以使用 python3.13 命令。如果您安裝了 py.exe 啟動器,則可以使用 py 命令。有關啟動 Python 的其他方法,請參見 附錄:設定環境變數

在主提示符處鍵入檔案結束符(Unix 上為 Control-D,Windows 上為 Control-Z)會導致直譯器以零退出狀態退出。如果這不起作用,您可以透過鍵入以下命令退出直譯器:quit()

直譯器的行編輯功能包括互動式編輯、歷史記錄替換以及對支援 GNU Readline 庫的系統上的程式碼完成。要檢視是否支援命令列編輯,最快的方法是在您獲得的第一個 Python 提示符下鍵入 Control-P。如果它發出嗶嗶聲,則您具有命令列編輯功能;有關按鍵的介紹,請參閱附錄 互動式輸入編輯和歷史記錄替換。如果沒有任何反應,或者回顯了 ^P,則表示命令列編輯不可用;您只能使用退格鍵從當前行中刪除字元。

直譯器的操作有點像 Unix shell:當使用連線到 tty 裝置的標準輸入呼叫時,它會互動式地讀取和執行命令;當使用檔名引數或將檔案作為標準輸入呼叫時,它會從該檔案中讀取和執行指令碼

啟動直譯器的第二種方法是 python -c command [arg] ...,它執行 command 中的語句,類似於 shell 的 -c 選項。由於 Python 語句通常包含空格或其他對 shell 具有特殊意義的字元,因此通常建議將整個 command 括在引號中。

一些 Python 模組也可以用作指令碼。可以使用 python -m module [arg] ... 呼叫它們,它會執行 module 的原始檔,就像您在命令列上拼寫出其全名一樣。

當使用指令碼檔案時,有時能夠在執行指令碼後進入互動模式會很有用。這可以透過在指令碼之前傳遞 -i 來完成。

所有命令列選項都在 命令列和環境 中進行了描述。

2.1.1. 引數傳遞

當直譯器知道時,指令碼名稱和之後的其他引數將轉換為字串列表,並分配給 sys 模組中的 argv 變數。您可以透過執行 import sys 來訪問此列表。該列表的長度至少為一;當沒有給出指令碼且沒有引數時,sys.argv[0] 是一個空字串。當指令碼名稱被給出為 '-' (表示標準輸入)時,sys.argv[0] 設定為 '-'。當使用 -c command 時,sys.argv[0] 設定為 '-c'。當使用 -m module 時,sys.argv[0] 設定為已定位模組的完整名稱。在 -c command-m module 之後找到的選項不會被 Python 直譯器的選項處理所消耗,而是保留在 sys.argv 中供命令或模組處理。

2.1.2. 互動模式

當從 tty 讀取命令時,直譯器被稱為處於互動模式。在這種模式下,它會使用主提示符(通常是三個大於號 (>>>))提示輸入下一個命令;對於續行,它會使用輔助提示符(預設為三個點 (...))進行提示。直譯器在列印第一個提示符之前,會列印一條歡迎訊息,其中宣告其版本號和版權宣告

$ python3.13
Python 3.13 (default, April 4 2023, 09:25:04)
[GCC 10.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

當輸入多行結構時,需要續行。例如,看一下這個 if 語句

>>> the_world_is_flat = True
>>> if the_world_is_flat:
...     print("Be careful not to fall off!")
...
Be careful not to fall off!

有關互動模式的更多資訊,請參見 互動模式

2.2. 直譯器及其環境

2.2.1. 原始碼編碼

預設情況下,Python 原始檔被視為以 UTF-8 編碼。在該編碼中,世界上大多數語言的字元可以同時用於字串文字、識別符號和註釋——儘管標準庫僅對識別符號使用 ASCII 字元,這是任何可移植程式碼都應遵循的約定。要正確顯示所有這些字元,您的編輯器必須識別該檔案是 UTF-8,並且必須使用支援檔案中所有字元的字型。

要宣告預設編碼以外的編碼,應將特殊的註釋行作為檔案的第一行新增。語法如下

# -*- coding: encoding -*-

其中 encoding 是 Python 支援的有效 codecs 之一。

例如,要宣告使用 Windows-1252 編碼,您的原始碼檔案的第一行應為

# -*- coding: cp1252 -*-

第一行規則的一個例外是,當原始碼以 UNIX “shebang” 行 開頭時。在這種情況下,編碼宣告應新增為檔案的第二行。例如

#!/usr/bin/env python3
# -*- coding: cp1252 -*-

腳註