2. Python 解釋器?

2.1. 調用解釋器?

The Python interpreter is usually installed as /usr/local/bin/python3.12 on those machines where it is available; putting /usr/local/bin in your Unix shell's search path makes it possible to start it by typing the command:

python3.12

這樣,就可以在 shell 中運行 Python 了 1 。因為可以選擇安裝目錄,解釋器也有可能安裝在別的位置;如果還不明白,就去問(wèn)問(wèn)身邊的 Python 大神或系統管理員。(例如,常見(jiàn)備選路徑還有 /usr/local/python。)

On Windows machines where you have installed Python from the Microsoft Store, the python3.12 command will be available. If you have the py.exe launcher installed, you can use the py command. See 附錄:設置環(huán)境變量 for other ways to launch Python.

在主提示符中,輸入文件結束符(Unix 里是 Control-D,Windows 里是 Control-Z),就會(huì )退出解釋器,退出狀態(tài)碼為 0。如果不能退出,還可以輸入這個(gè)命令:quit()。

在支持 GNU Readline 庫的系統中,解釋器的行編輯功能包括交互式編輯、歷史替換、代碼補全等。檢測是否支持命令行編輯最快速的方式是,在首次出現 Python 提示符時(shí),輸入 Control-P。聽(tīng)到“嗶”提示音,說(shuō)明支持行編輯;請參閱附錄 交互式編輯和編輯歷史,了解功能鍵。如果沒(méi)有反應,或回顯了 ^P,則說(shuō)明不支持行編輯;只能用退格鍵刪除當前行的字符。

解釋器的操作方式類(lèi)似 Unix Shell:用與 tty 設備關(guān)聯(lián)的標準輸入調用時(shí),可以交互式地讀取和執行命令;以文件名參數,或標準輸入文件調用時(shí),則讀取并執行文件中的 腳本。

啟動(dòng)解釋器的另一種方式是 python -c command [arg] ...,這與 shell 的 -c 選項類(lèi)似,其中,command 需換成要執行的語(yǔ)句。由于 Python 語(yǔ)句經(jīng)常包含空格等被 shell 特殊對待的字符,一般情況下,建議用單引號標注整個(gè) command。

Python 模塊也可以當作腳本使用。輸入:python -m module [arg] ...,會(huì )執行 module 的源文件,這跟在命令行把路徑寫(xiě)全了一樣。

在交互模式下運行腳本文件,只要在腳本名稱(chēng)參數前,加上選項 -i 就可以了。

命令行的所有選項詳見(jiàn) 命令行與環(huán)境。

2.1.1. 傳入參數?

解釋器讀取命令行參數,把腳本名與其他參數轉化為字符串列表存到 sys 模塊的 argv 變量里。執行 import sys,可以導入這個(gè)模塊,并訪(fǎng)問(wèn)該列表。該列表最少有一個(gè)元素;未給定輸入參數時(shí),sys.argv[0] 是空字符串。給定腳本名是 '-' (標準輸入)時(shí),sys.argv[0]'-'。使用 -c command 時(shí),sys.argv[0]'-c'。如果使用選項 -m module,sys.argv[0] 就是包含目錄的模塊全名。解釋器不處理 -c command-m module 之后的選項,而是直接留在 sys.argv 中由命令或模塊來(lái)處理。

2.1.2. 交互模式?

在終端(tty)輸入并執行指令時(shí),解釋器在 交互模式(interactive mode) 中運行。在這種模式中,會(huì )顯示 主提示符,提示輸入下一條指令,主提示符通常用三個(gè)大于號(>>>)表示;輸入連續行時(shí),顯示 次要提示符,默認是三個(gè)點(diǎn)(...)。進(jìn)入解釋器時(shí),首先顯示歡迎信息、版本信息、版權聲明,然后才是提示符:

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

輸入多行架構的語(yǔ)句時(shí),要用連續行。以 if 為例:

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

交互模式的內容詳見(jiàn) 交互模式。

2.2. 解釋器的運行環(huán)境?

2.2.1. 源文件的字符編碼?

默認情況下,Python 源碼文件的編碼是 UTF-8。這種編碼支持世界上大多數語(yǔ)言的字符,可以用于字符串字面值、變量、函數名及注釋 —— 盡管標準庫只用常規的 ASCII 字符作為變量名或函數名,可移植代碼都應遵守此約定。要正確顯示這些字符,編輯器必須能識別 UTF-8 編碼,而且必須使用支持文件中所有字符的字體。

如果不使用默認編碼,則要聲明文件的編碼,文件的 第一 行要寫(xiě)成特殊注釋。句法如下:

# -*- coding: encoding -*-

其中,encoding 可以是 Python 支持的任意一種 codecs。

比如,聲明使用 Windows-1252 編碼,源碼文件要寫(xiě)成:

# -*- coding: cp1252 -*-

第一行 的規則也有一種例外情況,源碼以 UNIX "shebang" 行 開(kāi)頭。此時(shí),編碼聲明要寫(xiě)在文件的第二行。例如:

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

備注

1

Unix 系統中,為了不與同時(shí)安裝的 Python 2.x 沖突,Python 3.x 解釋器默認安裝的執行文件名不是 python。