2.使用 Python 直譯器¶
2.1.啟動直譯器¶
在有安裝的機器上 Python 直譯器通常是被安裝在/usr/local/bin/python3.13
;把/usr/local/bin
放在 Unix shell 的搜尋路徑中就可以透過輸入指令來啟動它:
python3.13
能啟動 Python[1]。因為直譯器存放的目錄是個安裝選項,其他的目錄也是有可能的;請洽談在地的 Python 達人或者系統管理員。(例如:/usr/local/python
是個很常見的另類存放路徑。)
On Windows machines where you have installed Python from theMicrosoft Store, thepython3.13
command will be available. If you havethepy.exe launcher installed, you can use thepy
command. SeeExcursus: Setting environment variables 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
,就代表並沒有指令列編輯功能;此時只能使用 backspace 去除該行的字元。
這個直譯器使用起來像是 Unix shell:如果它被呼叫時連結至一個 tty 裝置,它會互動式地讀取並執行指令;如果被呼叫時給定檔名為引數或者使用 stdin 傳入檔案內容,它會將這個檔案視為腳本來閱讀。
另一個啟動直譯器的方式為python-ccommand[arg]...
,它會執行在command 裡的指令(們),行為如同 shell 的-c
選項。因為 Python 的指令包含空白等 shell 用到的特殊字元,通常建議用引號把command 包起來。
有些 Python 模組使用上如腳本般一樣方便。透過python-mmodule[arg]...
可以執行module 模組的原始碼,就如同直接傳入那個模組的完整路徑一樣的行為。
當要執行一個腳本檔時,有時候會希望在腳本結束時進入互動模式。此時可在執行腳本的指令加入-i
。
所有指令可用的參數都詳記在命令列與環境。
2.1.1.傳遞引數¶
當直擇器收到腳本的名稱和額外的引數後,他們會轉換為由字串所組成的 list(串列)並指派給sys
模組的argv
變數。你可以執行importsys
取得這個串列。這個串列的長度至少為一;當沒有給任何腳本名稱和引數時,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)中運行。在這種模式中,會顯示主提示符,提示輸入下一條指令,主提示符通常用三個大於號(>>>
)表示;輸入連續行時,顯示次要提示符,預設是三個點(...
)。進入直譯器時,首先顯示歡迎訊息、版本訊息、版權聲明,然後才是提示符:
$python3.13Python 3.13 (default, April 4 2023, 09:25:04)[GCC 10.2.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>>
接續多行的情況出現在需要多行才能建立完整指令時。舉例來說,像是if
敘述:
>>>the_world_is_flat=True>>>ifthe_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" line 行開頭時。此時,編碼聲明要寫在檔案的第二行。例如:
#!/usr/bin/env python3# -*- coding: cp1252 -*-
註解
[1]在 Unix 中,Python 3.x 直譯器預設安裝不會以python
作為執行檔名稱,以避免與現有的 Python 2.x 執行檔名稱衝突。