Python的設計哲學(xué)是“優(yōu)雅”、“明確”、“簡(jiǎn)單”。因此,Perl語(yǔ)言中“總是有多種方法來(lái)做同一件事”的理念在Python開(kāi)發(fā)者中通常是難以忍受的。Python開(kāi)發(fā)者的哲學(xué)是“用一種方法,最好是只有一種方法來(lái)做一件事”。在設計Python語(yǔ)言時(shí),如果面臨多種選擇,Python開(kāi)發(fā)者一般會(huì )拒絕花俏的語(yǔ)法,而選擇明確的沒(méi)有或者很少有歧義的語(yǔ)法。由于這種設計觀(guān)念的差異,Python源代碼通常被認為比Perl具備更好的可讀性,并且能夠支撐大規模的軟件開(kāi)發(fā)。這些準則被稱(chēng)為Python格言。在Python解釋器內運行import this可以獲得完整的列表。
Python開(kāi)發(fā)人員盡量避開(kāi)不成熟或者不重要的優(yōu)化。一些針對非重要部位的加快運行速度的補丁通常不會(huì )被合并到Python內。所以很多人認為Python很慢。不過(guò),根據二八定律,大多數程序對速度要求不高。在某些對運行速度要求很高的情況,Python設計師傾向于使用JIT技術(shù),或者用使用C/C++語(yǔ)言改寫(xiě)這部分程序??捎玫腏IT技術(shù)是PyPy。
Python是完全面向對象的語(yǔ)言。函數、模塊、數字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強源代碼的復用性。Python支持重載運算符和動(dòng)態(tài)類(lèi)型。相對于Lisp這種傳統的函數式編程語(yǔ)言,Python對函數式設計只提供了有限的支持。有兩個(gè)標準庫(functools, itertools)提供了Haskell和Standard ML中久經(jīng)考驗的函數式程序設計工具。
雖然Python可能被粗略地分類(lèi)為“腳本語(yǔ)言”(script language),但實(shí)際上一些大規模軟件開(kāi)發(fā)計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱(chēng)它為一種高級動(dòng)態(tài)編程語(yǔ)言,原因是“腳本語(yǔ)言”泛指僅作簡(jiǎn)單程序設計任務(wù)的語(yǔ)言,如shellscript、VBScript等只能處理簡(jiǎn)單任務(wù)的編程語(yǔ)言,并不能與Python相提并論。
Python本身被設計為可擴充的。并非所有的特性和功能都集成到語(yǔ)言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語(yǔ)言、C++、Cython來(lái)編寫(xiě)擴充模塊。Python編譯器本身也可以被集成到其它需要腳本語(yǔ)言的程序內。因此,很多人還把Python作為一種“膠水語(yǔ)言”(glue language)使用。使用Python將其他語(yǔ)言編寫(xiě)的程序進(jìn)行集成和封裝。在Google內部的很多項目,例如Google Engine使用C++編寫(xiě)性能要求極高的部分,然后用Python或Java/Go調用相應的模塊?!?a style="color: rgb(19, 110, 194); text-decoration: none;" target="_blank">Python技術(shù)手冊》的作者馬特利(Alex Martelli)說(shuō):“這很難講,不過(guò),2004 年,Python 已在Google 內部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬件的場(chǎng)合使用 C++,在快速開(kāi)發(fā)時(shí)候使用 Python?!?/p>