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 -*-
腳註