2. Python 解釋器?

2.1. 調(diào)用解釋器?

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 。因為可以選擇安裝目錄,解釋器也有可能安裝在別的位置;如果還不明白,就去問問身邊的 Python 大神或系統(tǒng)管理員。(例如,常見備選路徑還有 /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.

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

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

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

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

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

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

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

2.1.1. 傳入?yún)?shù)?

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

2.1.2. 交互模式?

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

$ 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.
>>>

輸入多行架構(gòu)的語句時,要用連續(xù)行。以 if 為例:

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

交互模式的內(nèi)容詳見 交互模式。

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

2.2.1. 源文件的字符編碼?

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

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

# -*- coding: encoding -*-

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

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

# -*- coding: cp1252 -*-

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

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

備注

1

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