# 2. 使用 Python 直譯器

## 2.1. 啟動直譯器

在有安裝的機器上 Python 直譯器通常是被安裝在 `/usr/local/bin/python3.15`；把 `/usr/local/bin` 放在 Unix shell 的搜尋路徑中就可以透過輸入命令來啟動它：

    python3.15

能啟動 Python [1]。因為直譯器存放的目錄是個安裝選項，其他的目錄也是有可能的；請洽談在地的 Python 達人或者系統管理員。（例如：`/usr/local/python` 是個很常見的另類存放路徑。）

Windows 系統中，從 Microsoft Store 安裝 Python 後，就可以使用 `python3.15` 命令了。如果安裝了 py.exe launcher ，則可以使用 `py` 命令。請參閱 Python 安裝管理員 了解其他啟動 Python 的方式。

在主提示字元輸入一個 end-of-file 字元（在 Unix 上為 `Control`-`D`；在 Windows 上為 `Control`-`Z`）會使得直譯器以零退出狀況 (zero exit status) 離開。如果上述的做法沒有效，也可以輸入 `quit()` 命令離開直譯器。

直譯器的命令列編輯功能有很多，在大多數系統上包含：互動編輯、歷史取代、命令補完等功能。最快檢查有無支援命令列編輯的方法為：在第一個 Python 提示字元後輸入 `Control`-`P`，如果出現嗶嗶聲，就代表有支援；見附錄互動式輸入編輯和歷史記錄替換介紹相關的快速鍵。如果什麼事都沒有發生，或者出現一個 `^P`，就代表並沒有命令列編輯功能；此時只能使用 backspace 去除該行的字元。

這個直譯器使用起來像是 Unix shell：如果它被呼叫時連結至一個 tty 裝置，它會互動式地讀取並執行命令；如果被呼叫時給定檔名為引數或者使用 stdin 傳入檔案內容，它會將這個檔案視為腳本來閱讀。

另一個啟動直譯器的方式為 `python -c command [arg] ...`，它會執行在 command 裡的陳述式（們），行為如同 shell 的 `-c` 選項。因為 Python 的陳述式包含空白等 shell 用到的特殊字元，通常建議用引號把 command 包起來。

有些 Python 模組使用上如腳本般一樣方便。透過 `python -m module [arg] ...` 可以執行 module 模組的原始碼，就如同直接傳入那個模組的完整路徑一樣的行為。

當要執行一個腳本檔時，有時候會希望在腳本結束時進入互動模式。這可以透過在腳本前加入 `-i` 選項來達成。

所有命令列可用的選項都詳記在命令列與環境。

### 2.1.1. 傳遞引數

當直譯器收到腳本的名稱和額外的引數後，他們會轉換為由字串所組成的 list（串列）並指派給 `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` 變數中給後續的 command 或 module 使用。

### 2.1.2. 互動模式

當命令從終端 (tty) 被讀取時，直譯器被稱為在互動模式（interactive mode）中。在這種模式中，會顯示主提示字元，提示輸入下一條命令，主提示字元通常用三個大於號（`>>>`）表示；輸入連續行時，顯示次要提示字元，預設是三個點（`...`）。進入直譯器時，首先顯示歡迎訊息、版本訊息、版權聲明，然後才是提示字元：

    $ python3.15
    Python 3.15 (default, May 7 2025, 15:46: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. 原始碼的字元編碼 (encoding)

預設 Python 原始碼檔案的字元編碼使用 UTF-8。在這個編碼中，世界上多數語言的文字可以同時被使用在字串內容、識別名 (identifier) 及註解中 --- 雖然在標準函式庫中只使用 ASCII 字元作為識別名，這也是個任何 portable 程式碼需遵守的慣例。如果要正確地顯示所有字元，你的編輯器需要能夠認識檔案為 UTF-8，並且需要能顯示檔案中所有字元的字型。

如果不使用預設編碼，則要聲明檔案的編碼，檔案的第一行要寫成特殊註解。語法如下：

    # -*- coding: encoding -*-

其中， encoding 可以是 Python 支援的任意一種 `codecs`。

比如，聲明使用 Windows-1252 編碼，原始碼檔案要寫成：

    # -*- coding: cp1252 -*-

第一行的規則也有一種例外情況，在原始碼以 UNIX "shebang" line 行開頭時。此時，編碼聲明要寫在檔案的第二行。例如：

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

註腳

[1]

在 Unix 中，Python 3.x 直譯器預設安裝不會以 `python` 作為執行檔名稱，以避免與現有的 Python 2.x 執行檔名稱衝突。