Python 百科全書
Python([KK] 英語發音: /'paɪθɑn/, [DJ] 英語發音: /ˈpaiθən/),是一種物件導向、直譯式電腦程式語言,也是一種功能強大的通用型語言,已經具有十多年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準函式庫,能夠輕鬆完成很多常見的任務。它的語法非常簡捷和清晰,與其它電腦程式語言不一樣,它採用縮排來定義語句塊。
Python支援指令式編程、物件導向程式設計、函數語言程式設計、面向切面程式、泛型程式多種程式範式。與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理內部記憶體使用。它經常被當作指令碼語言用於處理系統管理任務和Web程式,然而它也非常適合完成各種高階任務。Python虛擬機器本身幾乎可以在所有的作業系統中執行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python原始碼轉換成可以脫離Python直譯器執行的程式。
Python的主要參考實作是CPython,它是一個由社群驅動的自由軟體。目前由Python軟體基金會管理。目前,基於這種語言的相關技術正在飛速的發展,使用者數量急劇擴大,相關的資源非常多。
發展歷史
Python的創始人為吉多·范羅蘇姆。在1989年聖誕節期間的阿姆斯特丹,吉多為了打發聖誕節的無趣,決心開發一個新的指令碼解釋程式,作為ABC語言的一種繼承。之所以選中Python作為程式的名字,是因為他是一個蒙提·派森的飛行馬戲團的愛好者。
ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言非常優美和強大,是專門為非專業程式設計師設計的。但是ABC語言並沒有成功,究其原因,吉多認為是非開放造成的。吉多決心在Python中避免這一錯誤(的確如此,Python與其它的語言如C、C++和Java結合的非常好)。同時,他還想實作在ABC中閃現過但未曾實作的東西。
就這樣,Python在吉多手中誕生了。實際上,第一個實作是在Mac機上。可以說,Python是從ABC發展起來,主要受到了Modula-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響。並且結合了Unix shell和C的習慣。
目前吉多·范羅蘇姆仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社群經常稱呼他是仁慈的獨裁者。
Python 2.0於2000年10月16日發布,主要是實作了完整的垃圾回收,並且支援Unicode。同時,整個開發過程更加透明,社群對開發行程的影響逐漸擴大。2008年12月3發布,經過長時間的測試,Python 3.0發布。它不完全相容之前的Python代碼。不過,很多新特性後來也被移植到舊的Python 2.6/2.7版本。
作為程式語言的設計哲學與定位
Python的設計哲學是「優雅」、「明確」、「簡單」。因此,Perl語言中「總有多種方法來做同一件事」的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」。在設計Python語言時,如果面臨多種選擇,Python開發者總會拒絕花哨的語法,而選擇明確的沒有或者很少有歧義的語法。由於這種設計觀念的差異,Python原始碼通常認為比Perl具備更好的可讀性。
Python開發人員盡量避開不成熟或者不重要的最佳化。一些針對非重要部位的加快執行速度的修補程式通常不會被合併到Python內。所以很多認為Python很慢。不過,根據二八定律,大多數程式對速度要求不高。在某些對執行速度要求很高的情況,Python程式設計師傾向於使用JIT技術,或者用使用C/C++語言覆寫這部分程式。目前可用的JIT技術是Pysco。Cython可以將Python代碼轉換成C代碼。
相對於Lisp這種傳統的函數語言程式設計語言,Python對函數語言程式設計只提供了有限的支援。有兩個標準函式庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數語言程式設計工具。
雖然Python可能被粗略地分類為「指令碼語言」(script language),但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高階動態程式語言,原因是「指令碼語言」泛指僅作簡單程式任務的語言,如shell script、JavaScript等只能處理簡單任務的程式語言,並不能與Python相提並論。
Python本身被設計為可延伸的。並非所有的特性和功能都整合到語言核心。可以使用C語言、C++、Cython來編寫擴充功能模組。Python直譯器本身也可以被整合到其它需要指令碼語言的程式內。因此,很多人還把Python作為一種「膠水語言」(glue language)使用。使用Python將其他語言編寫的程式進行整合和封裝。在Google內部的很多專案使用C++編寫性能要求極高的部分,然後用Python呼叫相應的模組。
標準函式庫
Python之所以有這麼大的魅力,原因之一就是它有一個強大的標準函式庫。Python語言的核心只包含數位、字串、列表、字典、檔案等常見型別和函式,而由Python標準函式庫提供了系統管理、網路通訊、文字處理、資料庫介面、圖形系統、XML處理等額外的功能。Python標準函式庫命名介面清晰、文檔良好,很容易學習和使用。
Python社群提供了大量的第三方模組,使用方式與標準函式庫類似。它們的功能無所不包,覆蓋科學計算、Web開發、資料庫介面、圖形系統多個領域,並且大多成熟而穩定。第三方模組可以使用Python或者C語言編寫。SWIG,SIP常用於將C語言編寫的程式函式庫轉化為Python模組。Boost C++ Libraries 包含了一組函式庫,Boost.Python,使得以 Python 或 C++ 編寫的程式能互相呼叫。藉助於擁有基於標準函式庫的大量工具、能夠使用低階語言如C和可以作為其他函式庫介面的C++,Python已成為一種強大的應用於其他語言與工具之間的膠水語言。
Python標準函式庫的主要功能有:
* 文字處理,包含文字格式化、正規表式匹配、文字差異計算與合併、Unicode支援,二進制資料處理等功能
* 檔案處理,包含檔案操作、建立臨時檔案、檔案壓縮與歸檔、操作配置檔案等功能
* 作業系統功能,包含執行緒與行程支援、IO復用、日期與時間處理、呼叫系統函式、寫日記(logging)等功能
* 網路通訊,包含網路套接字,SSL加密通訊、非同步網路通訊等功能
* 網路協定,支援HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網路協定,並提供了編寫網路伺服器的框架
* W3C格式支援,包含HTML,SGML,XML的處理。
* 其它功能,包括國際化支援、數學運算、HASH、Tkinter等
Hello World程式
下面是一個在標準輸出裝置上輸出Hello World的簡單程式,這種程式通常作為開始學習程式語言時的第一個程式:
*
適用於Python 3.0以上版本以及Python 2.6, Python 2.7
print("Hello, world!")
*
適用於Python 2.6以下版本以及Python 2.6, Python 2.7
print "Hello, world!"
Python也可以單步直譯執行。執行Python直譯器進入互動式命令列的環境,你可以在提示符號>>>旁輸入print("Hello, world!"),按Enter鍵輸出結果:
*
適用於Python 3.0以上版本以及Python 2.6, Python 2.7
>>> print("Hello, world!")
Hello, world!
*
適用於Python 2.6以下版本以及Python 2.6, Python 2.7
>>> print "Hello, world!"
Hello, world!
注意,低於2.5版本的Python要去掉"Hello, world!"周圍的括弧。Python 3.x與Python 2.x的print函式語法是不一樣的。