[譯]The Python Tutorial#Using the Python Interpreter
2.1 Invoking the Interpreter
Python解釋器通常安裝在目標(biāo)機(jī)器的/usr/local/bin/python3.6目錄下;將/usr/local/bin設(shè)置到Unix shell的搜索路徑中,就可以使用以下命令:
python3.6
啟動(dòng)Python解釋器[1]。由于Python的安裝路徑是可選的,其他目錄也是可能的;可以咨詢Python安裝用戶或者系統(tǒng)管理員確認(rèn)。(例如/usr/local/python是常見的可選目錄。)
Window機(jī)器上,Python通常安裝在C:\Python36目錄,可是也可以在安裝過程中改變安裝路徑??梢栽贒OS中輸入以下命令來將安裝目錄加入環(huán)境變量:
set path=%path%;C:\python36
在主提示符后輸入文件結(jié)束符(Unix中是Control-D,Windows中是Control-Z)將導(dǎo)致解釋器以0狀態(tài)退出。如果不起作用,可以使用quit()命令來退出解釋器。
解釋器的行編輯特性在支持逐行讀取系統(tǒng)上的包括交互式編輯,歷史替換以及代碼補(bǔ)全。檢測(cè)是否支持命令行編輯的最快方法是在Python解釋器的第一個(gè)提示符處輸入Control-P,如果電腦發(fā)出嗶嗶聲音,則支持命令行編輯;參考附錄 Interactive Input Editing and History Substitution獲取對(duì)鍵的介紹。如果什么也沒有發(fā)生,或者^P重復(fù)輸出,則不支持命令行編輯;只能使用退格鍵移除當(dāng)前行的字符。
Python解釋器與Unix shell有些類似:當(dāng)連接終端設(shè)備使用標(biāo)準(zhǔn)輸入時(shí),解釋器交互讀取和執(zhí)行命令;當(dāng)使用文件名參數(shù)或者文件作為標(biāo)準(zhǔn)輸入時(shí),解釋器從文件中讀取并執(zhí)行腳本。
另一種啟動(dòng)Python解釋器的命令是:python -c command [arg]...,可在命令行直接執(zhí)行語句,類似shell的 -c 選項(xiàng)。由于Python語句通常包含空格或者其他對(duì)于shell而言的特殊字符,通常建議使用單引號(hào)講整個(gè)命令引用起來。
一些Python模塊作為腳本也是很有用的。這些模塊可以使用python -m module [args]..來調(diào)用,該命令執(zhí)行module的源文件,就像在命令行輸入其完整路徑名調(diào)用一樣。
當(dāng)執(zhí)行腳本文件時(shí),有時(shí)候需要在運(yùn)行腳本之后進(jìn)入交互模式??墒窃谀_本之前加上 -i 來實(shí)現(xiàn)。
Command line and environment 中有關(guān)于所有命令行選項(xiàng)的描述。
2.1.1 Argument Passing
通過解釋器執(zhí)行腳本時(shí),腳本名字以及其后額外的參數(shù)變?yōu)橐粋€(gè)字符串列表,并且被賦值給sys模塊中的argv變量??梢酝ㄟ^執(zhí)行import sys來訪問這個(gè)列表。該列表的長(zhǎng)度至少是1;當(dāng)沒有指定腳本和參數(shù)時(shí),sys.argv[0]是空字符串。當(dāng)腳本名字是'-'(表示標(biāo)準(zhǔn)輸入)時(shí)候,sys.argv[0]被設(shè)置為'-'。當(dāng)使用了-c 命令時(shí),sys.argv[0]被設(shè)置為-c。當(dāng)使用了-m模塊時(shí),sys.argc[0]被設(shè)置為本地模塊的全名。在-c 命令或者-m 模塊之后的選項(xiàng)不會(huì)被Python解釋器的選項(xiàng)處理機(jī)制所截獲,而是放入sys.argv中供命令或者模塊處理。
2.1.2 Interactive Mode
當(dāng)命令從終端讀取時(shí),稱解釋器處于交互模式中。在這個(gè)模式中,解釋器使用主提示符提示下一命令的輸入,通常使用三個(gè)大于符號(hào)(>>>);使用從屬提示符提示連續(xù)行的輸入,默認(rèn)使用三個(gè)逗號(hào)(...)。解釋器啟動(dòng)后,在打印第一個(gè)提示符之前,會(huì)打印一條以其版本號(hào)和版權(quán)提示開頭的歡迎語句:
$ python3.6
Python 3.6 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
輸入多行結(jié)構(gòu)時(shí)需要后續(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!
交互模式的更多信息,參見 Interactive Mode。
2.2 The Interpreter and Its Environment
2.2.1 Source Code Encoding
默認(rèn)情況下,Python源文件默認(rèn)以UTF-8編碼。使用這種編碼,世界上大多數(shù)語言的字符可以同時(shí)在字符串常量,標(biāo)識(shí)符以及注釋中使用——雖然標(biāo)準(zhǔn)庫標(biāo)識(shí)符只使用了ASCII字符,這是任何可移植代碼都應(yīng)該遵循的約定。為能夠正確展示所有字符,編輯器必須使用UTF-8讀取文件,并且必須使用支持文件中所有字符的字體。
在文件第一行加入特殊注釋行可以為文件指定不同編碼方式。語法如下:
# -*- coding: encoding -*-
這里的encoding必須是Python支持的有效編碼
例如,為聲明使用Windows-1252,源文件首行應(yīng)該如下:
# -*- coding: cp-1252 -*-
首行規(guī)則有一個(gè)例外,即當(dāng)源碼以UNIX "shebang" line開始。這種情況下,編碼聲明應(yīng)該加到第二行,例如:
#!/usr/bin/env python3
# -*- coding: cp-1252 -*-
Footnotes
<span id="jump1">[1] </span> Unix中,Python3.x解釋器并沒有以可執(zhí)行名字python安裝,以便于不與同時(shí)安裝的Python2.x沖突。