第一部分 前言
J2Y S+%K 簡(jiǎn)介: LeEv'] crvq]J5 Python是一種簡(jiǎn)單易學(xué),功能強(qiáng)大的編程語(yǔ)言,它有高效率的高層數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)單而有效地實(shí)現(xiàn)面向?qū)ο缶幊獭ython簡(jiǎn)潔的語(yǔ)法和對(duì)動(dòng)態(tài)輸入的支持,再加上解釋性語(yǔ)言的本質(zhì),使得它在大多數(shù)平臺(tái)上的許多領(lǐng)域都是一個(gè)理想的腳本語(yǔ)言,特別適用于快速的應(yīng)用程序開(kāi)發(fā)。
Ng,< 4; @a~GHG[x Python的特色: )y#~eYn QJ%[6S 簡(jiǎn)單
&\p=s.y?j Python是一種代表簡(jiǎn)單主義思想的語(yǔ)言。閱讀一個(gè)良好的Python程序就感覺(jué)像是在讀英語(yǔ)一樣,盡管這個(gè)英語(yǔ)的要求非常嚴(yán)格!Python的這種偽代碼本質(zhì)是它最大的優(yōu)點(diǎn)之一。它使你能夠?qū)W⒂诮鉀Q問(wèn)題而不是去搞明白語(yǔ)言本身。
pVN) k ^.?5!9U 易學(xué)
Gm1[PAj 就如同你即將看到的一樣,Python極其容易上手。前面已經(jīng)提到了,Python有極其簡(jiǎn)單的語(yǔ)法。
_(zPA4q8q ZIr&_x#e 免費(fèi)、開(kāi)源
K. l7yBm Python是FLOSS(自由/開(kāi)放源碼軟件)之一。簡(jiǎn)單地說(shuō),你可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念。這是為什么Python如此優(yōu)秀的原因之一——它是由一群希望看到一個(gè)更加優(yōu)秀的Python的人創(chuàng)造并經(jīng)常改進(jìn)著的。
_VM()n; *wu:fb2[( 高層語(yǔ)言
?ypX``3#s7 當(dāng)你用Python語(yǔ)言編寫(xiě)程序的時(shí)候,你無(wú)需考慮諸如如何管理你的程序使用的內(nèi)存一類(lèi)的底層細(xì)節(jié)。
PgMU|O7To }Kt1mmo:` 可移植性
tX'2 $} 由于它的開(kāi)源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過(guò)改動(dòng)使它能夠工作在不同平臺(tái)上)。如果你小心地避免使用依賴(lài)于系統(tǒng)的特性,那么你的所有Python程序無(wú)需修改就可以在下述任何平臺(tái)上面運(yùn)行。
8?z7!k] g*-%.fNA 這些平臺(tái)包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC!
appWq}db 2M$^|j:[ 解釋性
29tih{ xx 這一點(diǎn)需要一些解釋。
C;jV)hr6P ~M Mv+d88 一個(gè)用編譯性語(yǔ)言比如C或C++寫(xiě)的程序可以從源文件(即C或C++語(yǔ)言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語(yǔ)言(二進(jìn)制代碼,即0和1)。這個(gè)過(guò)程通過(guò)編譯器和不同的標(biāo)記、選項(xiàng)完成。當(dāng)你運(yùn)行你的程序的時(shí)候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤(pán)復(fù)制到內(nèi)存中并且運(yùn)行。
Ef2i#BoZ /kH 7I 而Python語(yǔ)言寫(xiě)的程序不需要編譯成二進(jìn)制代碼。你可以直接從源代碼 運(yùn)行 程序。在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱(chēng)為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語(yǔ)言并運(yùn)行。事實(shí)上,由于你不再需要擔(dān)心如何編譯程序,如何確保連接轉(zhuǎn)載正確的庫(kù)等等,所有這一切使得使用Python更加簡(jiǎn)單。由于你只需要把你的Python程序拷貝到另外一臺(tái)計(jì)算機(jī)上,它就可以工作了,這也使得你的Python程序更加易于移植。
/+JHnedK ~/l5ys 面向?qū)ο?
`JzP V/6 Python即支持面向過(guò)程的編程也支持面向?qū)ο蟮木幊。?面向過(guò)程 的語(yǔ)言中,程序是由過(guò)程或僅僅是可重用代碼的函數(shù)構(gòu)建起來(lái)的。在 面向?qū)ο?的語(yǔ)言中,程序是由數(shù)據(jù)和功能組合而成的對(duì)象構(gòu)建起來(lái)的。與其他主要的語(yǔ)言如C++和Java相比,Python以一種非常強(qiáng)大又簡(jiǎn)單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?span style="DISPLAY: none"> q .s'z}
kkU#0p?7 可擴(kuò)展性
%*a%F~Ss 如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開(kāi),你可以把你的部分程序用C或C++編寫(xiě),然后在你的Python程序中使用它們。
7 ?"-:q )z!#8s 可嵌入性
'BX U ' 你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
.kc{)d*0K N~vK8j@ 豐富的庫(kù)
^KUM4. 6 Python標(biāo)準(zhǔn)庫(kù)確實(shí)很龐大。它可以幫助你處理各種工作,包括正則表達(dá)式、文檔生成、單元測(cè)試、線程、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱(chēng)作Python的“功能齊全”理睢?
Q5 = 除了標(biāo)準(zhǔn)庫(kù)醞猬還有許多其他高質(zhì)量的庫(kù),如wxPython、Twisted和Python圖像庫(kù)等等。
oD 3Q{ e ;nw}x4Y[ ~F 13}is 第二部分 安裝編譯環(huán)境 Lm7fz9F% :Fdk`aC Xp~O?2:3l 注:由于linux系統(tǒng)本身都集成Python,本部分主要針對(duì)windows的調(diào)試環(huán)境 ]~7xq)28 (``|5;T\ 可以從
www.Python.org/download下載到。安裝過(guò)程與其他Windows軟件類(lèi)似。
X;d 1@ G +?+iVLr!l} 提示
4_w{~ 即便安裝程序?yàn)槟闾峁┝瞬粰z查 可選 組件的選項(xiàng),你也不要不作任何檢查!有些組件對(duì)你很有用,特別是集成開(kāi)發(fā)環(huán)境。
%$=}ePD U}SN#[* 在Windows命令行中使用Python
M (.Up 如果你想要從Windows命令行調(diào)用Python,那么你需要先正確的設(shè)置PATH變量。
3/*<i B8 R&Q8Q 對(duì)于Windows 2000、XP、2003,點(diǎn)擊控制面板->系統(tǒng)->高級(jí)->環(huán)境變量。在“系統(tǒng)變量”表單中點(diǎn)擊叫做PATH的變量,然后編輯這個(gè)變量,把;C:\Python23加到它的結(jié)尾。當(dāng)然,是Python所在的正確目錄名。
.h\[7r %$zX a%A U[c^xz& 第三部分 Hello World UYsyVY`Fm| 9Xeg &Z|! 對(duì)于Windows用戶,只要你正確的設(shè)置了PATH變量,你應(yīng)該可以從命令行啟動(dòng)解釋器;蛘吣憧梢赃x擇使用IDLE程序。IDLE是集成開(kāi)發(fā)環(huán)境的縮寫(xiě)。點(diǎn)擊開(kāi)始->程序->Python 2.3->IDLE(Python GUI)。Linux用戶也可以使用IDLE。
Un{9reX5 K) {\wV=" 注意,>>>是你鍵入Python語(yǔ)句的提示符。 afj[HJbY F!~oJ guk Ka $ python
-+Ab[ Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
dEWI8Q] [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Q:sw*7"F Type "help", "copyright", "credits" or "license" for more information.
2N[S*#~*e >>> print 'hello world'
'n0u6hCSb hello world
t&L+]I'P3 >>>
L>1i~c&V v35=4>Y 注意,Python會(huì)在下一行立即給出你輸出!你剛才鍵入的是一句Python 語(yǔ)句 。我們使用print(不要驚訝)來(lái)打印你提供給它的值。這里,我們提供的是文本Hello World,它被迅速地打印在屏幕上。
gdkQ h_\ _"R /k`8 如何退出Python提示符
5$.e5y<&( 如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。如果是在Windows命令行中,則按Ctrl-z再按Enter。
I# U"DwM /3ty*LQT WfF~\DlrD 第四部分 選一個(gè)編輯器 s 8 c#_ krI@N}OU 'ZboLoS*- 在我們開(kāi)始講述以源文件方式編寫(xiě)Python程序之前,我們需要一個(gè)編輯器來(lái)寫(xiě)源文件。挑選一個(gè)編輯器確實(shí)是極其重要的。你挑選一個(gè)編輯器就如同你挑選一輛你將購(gòu)買(mǎi)的轎車(chē)一樣。一個(gè)好的編輯器會(huì)幫助你方便地編寫(xiě)Python程序,使你地編程旅程更加舒適,幫助你更加快捷安全地到達(dá)目的地(實(shí)現(xiàn)目標(biāo))。
AYnk.H-v 8M&q 對(duì)于編輯器的基本要求之一是語(yǔ)法加亮功能,利用這一功能,你的Python程序的不同部分被標(biāo)以不同的顏色,這樣你可以更好 看清楚 你的程序,使它的運(yùn)行顯得形象化。
Ns} BE H d=v{3*a_4, 如果你使用Windows,那么我建議你使用IDLE。IDLE具備語(yǔ)法加亮功能,還有許多其他的功能,比如允許你在IDLE中運(yùn)行你的程序。特別值得注意的是:不要使用Notepad——它是一個(gè)糟糕的選擇,因?yàn)樗鼪](méi)有語(yǔ)法加亮功能,而且更加重要的是,它不支持文本縮進(jìn)。而我們將會(huì)看到文本縮進(jìn)對(duì)于我們來(lái)說(shuō)極其重要。一個(gè)好的編輯器,比如IDLE(還有VIM)將會(huì)自動(dòng)幫助你做這些事情。
PZjK 6]N\ S_ELV#X 如果你使用Linux/FreeBSD,那么你有很多種選擇。如果你是一位有經(jīng)驗(yàn)的程序員,你一定已經(jīng)在使用VIM或者Emacs了。勿庸置疑,它們是兩個(gè)功能最強(qiáng)大的編輯器。使用它們編寫(xiě)你的Python程序,你將從中受益。我個(gè)人使用VIM編寫(xiě)我的大多數(shù)程序。如果你是一個(gè)初學(xué)編程的人,那么你可以使用Kate,它也是我最喜歡的編輯器之一。只要你愿意花時(shí)間學(xué)習(xí)使用VIM或Emacs,那么我強(qiáng)烈建議你一定要學(xué)習(xí)兩者之一,因?yàn)閺拈L(zhǎng)遠(yuǎn)看來(lái)它們對(duì)你是極其有幫助的。
Un.u{$po A<$w }Fy; 如果你還想尋找一下其他可供選擇的編輯器,可以看一下詳盡的Python編輯器列表,然后作出你的選擇。你也可以使用Python的IDE(集成開(kāi)發(fā)環(huán)境)。請(qǐng)看一下詳盡的支持Python的IDE列表以獲得詳盡的信息。一旦你開(kāi)始編寫(xiě)大型的Python程序,IDE確實(shí)很有用。
|_GESpoHH $(=0J*ND" 我再一次重申,請(qǐng)選擇一個(gè)合適的編輯器——它能使編寫(xiě)Python程序變得更加有趣、方便。
s-"oT= aSVR +of 注:我們寫(xiě)L2J任務(wù)腳本用windows記事本即可
4;D>s8dgG =`W#R r0L' mf$ 746['sf4c 第五部分 源文件編譯 /)/>/4O `Dp_c&9] >m'n#=yap 使用源文件
r[W Ir|r7 現(xiàn)在讓我們重新開(kāi)始編程。當(dāng)你學(xué)習(xí)一種新的編程語(yǔ)言的時(shí)候,你編寫(xiě)運(yùn)行的第一個(gè)程序通常都是“Hello World”程序,這已經(jīng)成為一種傳統(tǒng)了。在你運(yùn)行“Hello World”程序的時(shí)候,它所做的事只是說(shuō)聲:“Hello World”。正如提出“Hello World”程序的Simon Cozens[1]所說(shuō):“它是編程之神的傳統(tǒng)咒語(yǔ),可以幫助你更好的學(xué)習(xí)語(yǔ)言!
rcU*6`IWA v FW g0 $, 啟動(dòng)你選擇的編輯器,輸入下面這段程序,然后把它保存為helloworld.py。
w6<zPrA .F^372hH3 例3.2 使用源文件
_]6n]koD, H%G|8,4 #!/usr/bin/python
=niT]xf # Filename : helloworld.py
o3,}X@p print 'Hello World'
tr@)zM GB 7;3;8Q FX (源文件:code/helloworld.py)
Sgq" 3(+%, {vox x&UX 為了運(yùn)行這個(gè)程序,請(qǐng)打開(kāi)shell(Linux終端或者DOS提示符),然后鍵入命令python helloworld.py。如果你使用IDLE,請(qǐng)使用菜單Edit->Run Script或者使用鍵盤(pán)快捷方式Ctrl-F5。輸出如下所示。
|<!xD iB |{9&!=/qf 輸出
4`'V%)M $ python helloworld.py
O~4Q:#^c Hello World
OCv,EZ Rgb&EnVW 如果你得到的輸出與上面所示的一樣,那么恭喜!——你已經(jīng)成功地運(yùn)行了你的第一個(gè)Python程序。
fR#W#n#m L!0}&i;u~5 萬(wàn)一你得到一個(gè)錯(cuò)誤,那么請(qǐng)確保你鍵入的程序 準(zhǔn)確無(wú)誤 ,然后再運(yùn)行一下程序。注意Python是大小寫(xiě)敏感的,即print與Print不一樣——注意前一個(gè)是小寫(xiě)p而后一個(gè)是大寫(xiě)P。另外,確保在每一行的開(kāi)始字符前沒(méi)有空格或者制表符——我們將在后面討論為什么這點(diǎn)是重要的。
Iwe >/G[Oo 它如何工作
Xh@;4n 讓我們思考一下這個(gè)程序的前兩行。它們被稱(chēng)作 注釋 ——任何在#符號(hào)右面的內(nèi)容都是注釋。注釋主要作為提供給程序讀者的筆記。
1^tM%2rP' Xa_:B\ic Python至少應(yīng)當(dāng)有第一行那樣的特殊形式的注釋。它被稱(chēng)作 組織行 ——源文件的頭兩個(gè)字符是#!,后面跟著一個(gè)程序。這行告訴你的Linux/Unix系統(tǒng)當(dāng)你 執(zhí)行 你的程序的時(shí)候,它應(yīng)該運(yùn)行哪個(gè)解釋器。這會(huì)在下一節(jié)做詳細(xì)解釋。注意,你總是可以通過(guò)直接在命令行指定解釋器,從而在任何平臺(tái)上運(yùn)行你的程序。就如同命令python helloworld.py一樣。
h(p c GE uoTc c|Kc 重要
E&>;a!0b] 在你的程序中合理地使用注釋以解釋一些重要的細(xì)節(jié)——這將有助于你的程序的讀者輕松地理解程序在干什么。記住,這個(gè)讀者可能就是6個(gè)月以后的你!
W4"1H0s`l {EJ+ 跟在注釋之后的是一句Python 語(yǔ)句 ——它只是打印文本“Hello World”。print實(shí)際上是一個(gè)操作符,而“Hello World”被稱(chēng)為一個(gè)字符串——?jiǎng)e擔(dān)心我們會(huì)在后面詳細(xì)解釋這些術(shù)語(yǔ)