2. 使用 Python 直譯器

2.1. 呼叫直譯器

Python 直譯器通常安裝在 /usr/local/bin/python3.14,在支援它的機器上;將 /usr/local/bin 新增到你的 Unix shell 搜尋路徑中,就可以透過在 shell 中輸入命令來啟動它

python3.14

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

在 Windows 機器上,如果你是從Microsoft Store 安裝的 Python,則 python3.14 命令將可用。如果你安裝了py.exe 啟動器,則可以使用 py 命令。有關啟動 Python 的其他方式,請參閱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 命令 時,sys.argv[0] 設定為 '-c'。當使用 -m 模組 時,sys.argv[0] 設定為找到的模組的完整名稱。在 -c 命令-m 模組 之後找到的選項不會被 Python 直譯器的選項處理所消耗,而是留在 sys.argv 中供命令或模組處理。

2.1.2. 互動模式

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

$ python3.14
Python 3.14 (default, April 4 2024, 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 -*-

腳註