Python是一種功能強大的解釋執行自動編譯的動態型語言,物件導向的同時還支援面向過程的編程,有靈活方便資料結構,擁有大量優秀的模組,文法清晰、簡潔,而且可以在眾多的平台上運行,非常適合於完成各種高層任務。目前,基於這種語言的相關技術正在飛速的發展,使用者數量急劇擴大,鑒於此,從本文開始筆者將向讀者陸續介紹Python編程的有關知識。雖然Python能支援多種平台,但是我們這裡以Windows系統作為我們的工作平台。現在,我們先從準備工作開始做起吧!
一、安裝Python
安裝Python時,既可以從原始碼安裝,也可以用已經編譯並打包好的二進位版本來安裝。顯然,後者較為簡單,它的安裝程式可以從Web網站http://www.python.org免費下載,對於Windows系統而言,當前最新的安裝包為Python-2.5.2.msi。下載後,直接雙擊便可以按照提示安裝了,非常簡單。
二、使用Python解譯器
對於初學者來說,可以簡單的把Python的解譯器看成是一個“代辦”:我們把要做的事情用這個“代辦”能聽懂的話告訴它,然後它就會按照我們的吩咐完成相應的工作。注意,要告訴Python做哪些事情的方法是使用Python指令,即語句;我們既可以一步一步的告訴它,Python的解譯器會一句一句地解釋執行;也可以把要執行的語句一股腦地放到一個檔案(即Python程式檔案)中,這些檔案通常以.py檔案的形式出現,這時Python的解譯器會按順序執行這種檔案中的所有語句。上面所說的的““代辦”能聽懂”則意味著要符合Python的文法,這些文法我們會在後面的文章中逐步講解。
現在我們以慣用的“Hello,world!”為例開始我們的Python之旅。安裝Python後,您可以從“開始”菜單→“所有程式”→“Python 2.5”→“Python(command line)”來啟動Python解譯器。但是這樣做有些麻煩,所以建議讀者到Python的安裝目錄下,在Python表徵圖上單擊右鍵,在彈出的菜單中選擇“建立捷徑”(見圖1),之後把建立的捷徑表徵圖複製到案頭上,之後用起來就會方便多了。
圖1 為Python解譯器建立捷徑
啟動解譯器後,我們可以直接在其提示符(Python的提示符是>>>)後輸入下面一句:
print ‘Hello,world!’
我想讀者已經猜到了,這句話是讓Python在螢幕上顯示“Hello,world!”。按斷行符號鍵後,螢幕上的輸出情況2所示:
圖2 在Python中互動執行“Hello,world!”
我相信,很多使用C語言編程的人看了之後一定覺得很彆扭,因為這看起來一點都不像是在編程,簡直就是在使用計算機。實際上Python解譯器用起來的確有點像是“計算機”,比如在提示符後輸入下面一句:
print 8+8
這時解譯器的輸出情況,3所示:
圖3 將解譯器用作計算機
那好,既然這樣我們就換一種更像編程的方式來完成這個最簡單的編程任務。
三、程式“Hello,world!”
首先,開啟記事本,在其中鍵入以下語句:
#Printing a line of text
print 'Hello,world!'
然後,將這個檔案另存新檔hello.py。注意這裡的尾碼,一般情況下都將Python程式檔案的尾碼定為.py。這個程式非常簡單,只有三行。我們先看第一行,它是以#開頭,這表示這一行是注釋。我們知道,在程式中加上必要的注釋是很重要的,一則可以協助別人理解我們的程式,二則可以協助我們日後的維護,因為隨著時間的推移,當初寫的代碼的含義很可能會在記憶中淡忘,這時原先的注釋會帶來莫大的協助。
像這樣以#開頭的注釋稱為單行注釋,它的特點是注釋在本行的末尾結束。不過,單行注釋不僅可以起始於行首,也可以起始於一行的中間部位,比如跟在代碼的後面對該行的代碼進行註解。但是無論如何,Python都不會把它轉換成實際的操作。
在注釋行之後,是一個空行。我們可以在不同功能的程式碼片段之間用空行加以分隔,這裡使用空行把注釋部分和代碼部分隔開,這樣會程式的可讀性更強。
第3行是本程式的主角,一個print語句,它的作用是讓電腦顯示引號之間的字串。字串,顧名思義,就是一串字元,不過這些字元是有其順序的。注意,這裡的句尾不像C語言那樣以分號“;”作為結束符,Python的語句末尾什麼也不加。和注釋行不同,這一行會被Python轉換成實際的操作,那就是在螢幕上顯示一行文字:“Hello,world”,如所示,您會發現print語句中的引號並不在輸出之列。
圖4 程式hello.py的執行情況
四、運行程式
要想運行Python程式,可以在Dos提示符下切換到Python程式檔案所在目錄,就上例而言,因為我們的樣本程式位於C:\python25\test目錄下,可以用下列命令:
cd C:\python25\test
然後,在命令提示字元下輸入python,後跟要執行的程式名即可,如要運行hello.py,可以使用以下命令:
python hello.py
程式運行情況見圖4。
迄今為止,我們已經使用了兩種不同的方式來執行Python的語句了。第一種方式是使最先介紹的直接在解譯器中輸入語句來執行,這種互動模式一次只能一個語句,見圖2。第二種方式是把要執行的語句放進一個尾碼名為.py的檔案中,然後讓Python解譯器來執行檔案中的代碼,見圖4。對於第二種方式,Python解譯器執行存放在檔案中的代碼時,會從檔案的第一行開始,一行接一行地往下解釋並執行,直到檔案結束為止。
五、解釋執行
上面談到了Python語句的兩種執行方式,實際上,這兩種運行方式在本質上是相同的,它們都是由解譯器來解釋執行我們提供的Python語句。
這裡所說的解釋執行是相對於編譯執行而言的。我們知道,使用諸如C或C++之類的編譯性語言編寫的程式可以從源檔案轉換成電腦使用的機器語言,經連接器串連後形成二進位可執行檔。當我們運行二進位可執行程式的時候,因為已經編譯好了,所以載入器軟體把二進位程式從硬碟載入記憶體中並運行。
與之不同,Python語言寫的程式不需要編譯成二進位代碼,它可以直接從原始碼運行程式。當我們運行Python檔案程式的時候,Python解譯器把原始碼轉換成中間形式:位元組碼,然後再由Python虛擬機器來執行這些位元組碼,5所示。這樣的話,我們就用不著擔心程式的編譯,庫的串連載入等問題了,所有這些工作都由Python虛擬機器代勞了。
圖5 Python解釋執行
對於Python的解釋語言特性,我們要一分為二的看待。一方面,每次運行時都要進行轉換成位元組碼,然後再由虛擬機器把位元組碼轉換成機器語言,最後才能在硬體上運行。較之於編譯性程式設計語言,每次運行都會多出兩道工序,所以它的效能會受到影響。另一方面,由於不用關心程式的編譯以及庫的串連等問題,所以開發工作會變得更輕鬆;同時虛擬機器距離物理機器更遠了,所以Python程式更加易於移植,實際上無需改動就能在多種平台上運行。
六、小結
本文向讀者介紹了Python的安裝和解譯器的使用,同時用最常見的“Hello,world!”樣本程式向讀者講解了Python程式的編寫和運行。最後對Python的解釋執行特性做了簡單的介紹。讀者可能已經發現,Python編程很簡潔,也很容易上手,至於更多的內容,我們會在後續的文章中陸續加以介紹。