從根本上講,Python是一種面向對象的語言。它的類模型支持多態、運算符重載和多重繼承等高級概念,並且以Python特有的簡潔的語法和類型為背景,OOP十分易於使用。事實上,即使你不懂這些術語,仍會發現學習Python比學習其他OOP語言要容易得多。
除了作為一種強大的代碼組織和重用手段以外,Python的OOP本質使它成為其他面向對象系統語言的理想腳本工具。例如,通過適當的粘接代碼,Python程序可以對C++、Java和C#的類進行子類的定制。
OOP只是Python的一個選擇而已,這一點非常重要。即使不能立馬成為一個面向對象高手,但你同樣可以繼續深入學習。就像C++一樣,Python既支持面向對象編程也支持面向過程編程的模式。如果條件允許,其面向對象的工具可以立即派上用場。這對策略開發模式十分有用,該模式常用於軟件開發的設計階段。
除了最初的過程式(語句為基礎)和面向對象(類為基礎)的編程范式,Python在最近幾年內置了對函數式編程的支持——一個多數情況下包括生成器、推導、閉包、映射、裝飾器、匿名lambda函數和第一類函數對象的集合。這是對其本身OOP工具的補充和替代。
Python的使用和分發是完全免費的。就像其他的開源軟件一樣,例如,Tcl、Perl、Linux和Apache。你可以從Internet上免費獲得Python的源代碼。你可以不受限制地復制Python,或將其嵌入你的系統或者隨產品一起發布。實際上,如果你願意的話,甚至可以銷售它的源代碼。
但請別誤會:“免費”並不代表“沒有支持”。恰恰相反,Python的在線社區對用戶需求的響應和商業軟件一樣快。而且,由於Python完全開放源代碼,提高了開發者的實力,並產生了一個很大的專家團隊。
盡管研究或改變一種程序語言的實現並不是對每一個人來說都那麼有趣,但是當你知道如果需要的話可以做到這些,該是多麼的令人欣慰。你不需要去依賴商業廠商的智慧,因為最終的文檔和終極的淨土(源碼)任憑你的使用。
Python的開發是由社區驅動的,是Internet大范圍的協同合作努力的結果。Python語言的改變必須遵循一套規范而有約束力的程序(稱作PEP流程),並需要經過規范的測試系統進行徹底檢查。正是這樣才使得Python相對於其他語言和系統可以保守地持續改進。
盡管Python 2.X和Python 3.X版本之間的分裂有力並蓄意地破壞了這項傳統,但通常它仍然體現在Python的這兩個系列內部。
Python的標准實現是由可移植的ANSI C編寫的,可以在目前所有主流平台上編譯和運行。例如,如今從掌上電腦(PDA)到超級計算機,隨處可見 Python的運行。Python可以在下列平台上運行(這裡只是部分列表):
除了語言解釋器本身以外,Python發行時自帶的標准庫和模塊在實現上也都盡可能地考慮到了跨平台的移植性。此外,Python程序自動編譯成可移植的字節碼,這些字節碼在已安裝兼容版本Python的平台上運行的結果都是相同的。
這些意味著Python程序的核心語言和標准庫可以在Linux、Windows和其他帶有Python解釋器的平台上無差別地運行。大多數Python外圍接口都有平台相關的擴展(例如COM支持Windows),但是核心語言和庫在任何平台都一樣。
就像之前我們提到的那樣,Python還包含了一個叫作tkinter(Tkinter的2.X版本)的Tk GUI工具包,它可以使Python程序實現功能完整的,無須做任何修改即可在所有主流GUI桌面平台運行的用戶圖形界面。
從語言特性的角度來看,Python是一個混合體。它豐富的工具集使它介於傳統的腳本語言(如Tcl、Scheme和Perl)和系統語言(如C、C++和Java)之間。Python提供了所有腳本語言的簡單和易用性,並且具有那些在編譯語言中才能找到的高級軟件工程工具。
不像其他腳本語言不同,這種結合使Python在長期大型的開發項目中十分有用。下面是一些Python工具箱中的工具簡介:
除了這一系列的Python工具外,Python保持了相當簡潔的語法和設計。綜合這一切得到的就是一個具有腳本語言所有可用性的強大編程工具。
Python程序可以以多種方式輕易地與其他語言編寫的組件“粘接”在一起。例如,Python的C語言API可以幫助Python程序靈活地調用C程序。這意味著可以根據需要給Python程序添加功能,或者在其他環境系統中使用Python。
例如,將Python與C或者C++寫成的庫文件混合起來,使Python成為一個前端語言和定制工具。就像之前我們所提到過的那樣,這使Python成為一個很好的快速原型工具;系統可以在開發初期出於速度考慮使用Python實現,然後轉移至C,根據不同時期性能的需要逐步實現系統。
同其他語言(如C++、Java和C#)相比,Python編程對大多數用戶來講出奇得簡單。要運行Python程序,你只需簡單地鍵入Python程序並運行就可以了。不需要其他語言(如C或C++)所必需的編譯和鏈接等中間步驟。
Python可立即執行程序,這形成了一種交互式編程體驗和不同情況下快速調整的能力,往往在修改代碼後幾乎能立即看到程序改變後的效果。
當然,開發周期短僅僅是Python易用性的一方面的體現。Python提供了簡潔的語法和強大的內置工具。實際上,Python曾被稱為“可執行的偽代碼”。由於它減少了其他工具常見的復雜性,在實現相同的功能時,Python程序比采用其他流行語言編寫的程序更為簡單、小巧,也更靈活。
最後,你也許已經知道了,人們往往將Python與Perl、Tcl和Javat等語言相比較。這部分總結這方面的一些普遍共識。
我想預先表明我個人並不喜歡通過诋毀競爭者來獲勝——這在長期是行不通的,而且也不是這裡的目的。此外,這並不是一場零和游戲——絕大多數的程序員在他們的職業生涯中都會使用許多語言。盡管如此,編程工具也展示出值得考慮的選擇和權衡。畢竟,如果Python沒有比它的競爭者提供更多的東西,那麼它一開始就不會被人們使用了。
我們之前已經介紹過性能上的權衡,那麼這裡重點談一下功能。盡管下面列舉的這些語言也是值得學習和使用的有力工具,但人們通常認為Python:
特別是對不僅僅用於個人掃描文本文件,未來會被人們(包括你在內)讀到的程序而言,很多人會發現Python比目前任何可用的腳本或編程語言都劃得來。不僅如此,除非你的應用要求最尖端的性能,Python往往是C、C++和Java等系統開發語言的一個不錯的替代品:Python代碼能夠常常實現相同的目標,卻會減少很多編寫、調試和維護的麻煩。