2. 使用 Python 直譯器¶
2.1. 啟動直譯器¶
The Python interpreter is usually installed as /usr/local/bin/python3.10
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.10
能啟動 Python 1。因為直譯器存放的目錄是個安裝選項,其他的目錄也是有可能的;請洽談在地的 Python 達人或者系統管理員。(例如:/usr/local/python
是個很常見的另類存放路徑。)
On Windows machines where you have installed Python from the Microsoft Store, the python3.10
command will be available. If you have
the py.exe launcher installed, you can use the py
command. See 附录:设置环境变量 for other ways to launch Python.
在主提示符輸入一個 end-of-file 字元(在 Unix 上為 Control-D;在 Windows 上為 Control-Z)會使得直譯器以零退出狀況 (zero exit status) 離開。如果上述的做法沒有效,也可以輸入指令 quit()
離開直譯器。
解释器的行编辑功能在支持 GNU Readline 库的系统中也包括交互式编辑,历史替换和代码补全等。 检测是否支持行编辑最快速的方式是在首次出现 Python 提示符时输入 Control-P。 如果听到“哔”提示音,就说明支持行编辑;请参阅附录 交互式编辑和编辑历史 了解有关功能键的介绍。 如果什么都没发生,或是回显了 ^P
,说明不支持行编辑;你只能用退格键从当前行中删除字符。
這個直譯器使用起來像是 Unix shell:如果它被呼叫時連結至一個 tty 裝置,它會互動式地讀取並執行指令;如果被呼叫時給定檔名為引數或者使用 stdin 傳入檔案內容,它會將這個檔案視為腳本來閱讀。
另一個起動直譯器的方式為 python -c command [arg] ...
,它會執行在 command 裡的指令(們),行為如同 shell 的 -c
選項。因為 Python 的指令包含空白等 shell 用到的特殊字元,通常建議用單引號把 command 包起來。
有些 Python 模組使用上如腳本般一樣方便。透過 python -m module [arg] ...
可以執行 module 模組的原始碼,就如同直接傳入那個模組的完整路徑一樣的行為。
當要執行一個腳本檔時,有時候會希望在腳本結束時進入互動模式。此時可在執行腳本的指令加入 -i
。
所有指令可用的參數都詳記在命令行与环境。
2.1.1. 傳遞引數¶
當直擇器收到腳本的名稱和額外的引數後,他們會轉換為由字串所組成的 list(串列)並指派給 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
變數中給後續的 command 或 module 使用。
2.1.2. 互動模式¶
在终端(tty)输入并执行指令时,我们说解释器是运行在 交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt),提示输入下一条指令,通常用三个大于号(>>>
)表示;连续输入行的时候,它会显示 次要提示符,默认是三个点(...
)。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:
$ python3.10
Python 3.10 (default, June 4 2019, 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. 原始碼的字元編碼 (encoding)¶
預設 Python 原始碼檔案的字元編碼使用 UTF-8。在這個編碼中,世界上多數語言的文字可以同時被使用在字串內容、識別名 (identifier) 及註解中 --- 雖然在標準函式庫中只使用 ASCII 字元作為識別名,這也是個任何 portable 程式碼需遵守的慣例。如果要正確地顯示所有字元,您的編輯器需要能夠認識檔案為 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 執行檔名稱衝突。