2. 使用 Python 解釋器?

2.1. 調用解釋器?

在Python可用的機器上,Python解釋器通常放在 /usr/local/bin/python3.7 ; 把 /usr/local/bin 放到你 Unix shell 的搜索路徑當中 , 這樣就能鍵入命令:

python3.7

就能運行了 1 。安裝時可以選擇安裝目錄,所以解釋器也可能在別的地方;可以問問你身邊的 Python 大牛,或者你的系統管理員。(比如 /usr/local/python 也是比較常用的備選路徑)

在 Windows 機器上當你從 Microsoft Store 安裝 Python 之后,python3.7 命令將可使用。 如果你安裝了 py.exe 啟動器,你將可以使用 py 命令。 參閱 附錄:設置環境變量 了解其他啟動 Python 的方式。

在主提示符中輸入文件結束字符(在 Unix 系統中是 Control-D,Windows 系統中是 Control-Z)就退出解釋器并返回退出狀態為0。如果這樣不管用,你還可以寫這個命令退出:quit()。

解釋器的行編輯功能在支持 GNU Readline 庫的系統中也包括交互式編輯,歷史替換和代碼補全等。 檢測是否支持行編輯最快速的方式是在首次出現 Python 提示符時輸入 Control-P。 如果聽到“嗶”提示音,就說明支持行編輯;請參閱附錄 交互式編輯和編輯歷史 了解有關功能鍵的介紹。 如果什么都沒發生,或是回顯了 ^P,說明不支持行編輯;你只能用退格鍵從當前行中刪除字符。

解釋器運行的時候有點像 Unix 命令行:在一個標準輸入 tty 設備上調用,它能交互式地讀取和執行命令;調用時提供文件名參數,或者有個文件重定向到標準輸入的話,它就會讀取和執行文件中的 腳本。

另一種啟動解釋器的方式是 python -c command [arg] ...,其中 command 要換成想執行的指令,就像命令行的 -c 選項。由于 Python 代碼中經常會包含對終端來說比較特殊的字符,通常情況下都建議用英文單引號把 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 modulesys.argv[0] 就是包含目錄的模塊全名。在 -c command-m module 之后的選項不會被解釋器處理,而會直接留在 sys.argv 中給命令或模塊來處理。

2.1.2. 交互模式?

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

$ python3.7
Python 3.7 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] 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 -*-

備注

1

在Unix系統中,Python 3.x解釋器默認安裝后的執行文件并不叫作 python,這樣才不會與同時安裝的Python 2.x沖突。