Can you summarize the following document?
        
  Python的創始人為吉多·範羅蘇姆,當時他在阿姆斯特丹的CWI工作。1989年的聖誕節期間,吉多·範羅蘇姆為了在打發時間,決心開發一個新的指令碼解釋程式,作為ABC語言的一種繼承,擔負同的互動和異常處理。之所以選中Python作為程式的名字,是因為他是BBC電視劇——蒙提·派森的飛行馬戲團的愛好者。Python是為了替代使用Unix shell和C語言進行系統管理而從ABC語言發展起來,而它的模組系統主要受到了Modula-3的影響,它還結合了C語言的最少爭議特徵。就範羅蘇姆本人看來,ABC這種語言非常優美和強大,是專門為非專業程式設計師設計的。但是ABC語言並沒有成功,究其原因,他認為是非開放造成的。範羅蘇姆決心在Python中避免這一錯誤,並取得了非常好的效果。  目前範羅蘇姆仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社群經常稱呼他是終身仁慈獨裁者(BDFL)。  Python 2.0於2000年10月16日釋出,增加了實現完整的垃圾回收,並且支援Unicode。同時,整個開發過程更加透明,社群對開發進度的影響逐漸擴大。  Python 3.0於2008年12月3日釋出,此版不完全相容之前的Python原始碼。不過,很多新特性後來也被移植到舊的Python 2.6/2.7版本。

  Python是多正規化程式語言。完全支援物件導向程式設計和結構化程式設計,而它的很多特徵支援函數語言程式設計和麵向切面程式設計(包括超程式設計和(魔術方法))。Python是完全物件導向的語言,函式、模組、數值、字串都是物件;並且完全支援繼承、過載、派生、多重繼承,有益於增強原始碼的複用性。Python支援過載運算子,因此Python也支援泛型設計。Python對遵循Lisp傳統的函數語言程式設計提供了有限的支援,它提供了 codice_1、codice_2、codice_3函式;列表推導、字典、集合和生成器表示式。標準庫中有兩個模組(functools和itertools)實現了從Haskell和Standard ML取來的函式式工具。  Python的設計哲學是“優雅”、“明確”、“簡單”。Python開發者的哲學是“用一種方法,最好是隻有一種方法來做一件事”,也因此它和擁有明顯個人風格的其他語言很不一樣。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法。這些準則被稱為「Python之禪」。在Python直譯器內執行codice_4可以獲得完整的列表,下面是其中首要:  Python開發人員儘量避開不成熟或者不重要的優化。一些針對非重要部位的加快執行速度的補丁通常不會被合併到Python內。再加上因為Python屬於動態型別語言,動態型別語言是在執行期間檢查資料的型別,不得不保持描述變數值的實際型別標記,程式在每次操作變數時,需要執行資料依賴分支,而靜態型別語言相對於動態型別語言,在宣告變數時已經指定了資料型別和表示方法,根據這一原理導致Python相對於C、Visual Basic等靜態型別語言來說執行速度較慢。不過,根據二八定律,大多數程式對速度要求不高。在某些對執行速度要求很高的情況,Python設計師可以使用JIT技術如PyPy,或者使用C/C++語言編寫擴充套件模組。  Python本身被設計為可擴充的。並非所有的特性和功能都整合到語言核心。Python提供了豐富的API和工具,以便程式設計師能夠輕鬆地使用C、C++、Cython來編寫擴充模組。Python編譯器本身也可以被整合到其它需要指令碼語言的程式內。因此,有很多人把Python作為一種「膠水語言」使用。使用Python將其他語言編寫的程式進行整合和封裝。

  Python的設計目標之一是讓程式碼具備高度的可閱讀性。它設計時儘量使用其它語言經常使用的標點符號和英文單字,讓程式碼看起來整潔美觀。因為Python是動態語言,它不像其他的靜態語言如C、Pascal那樣需要書寫宣告語句。

  Python開發者有意讓違反了縮排規則的程式不能通過解釋,以此來強迫程式設計師養成良好的程式設計習慣,也方便所有人查詢和閱讀。並且Python語言利用縮排表示語句塊的開始和結束(Off-side規則),而非使用花括號或者某種關鍵字。增加縮排表示語句塊的開始,而減少縮排則表示語句塊的結束。縮排成為了語法的一部分。例如codice_5語句: if age < 21: print("這句話處於if語句塊的外面")  根據PEP 8的規定,必須使用4個空格來表示每級縮排。使用Tab字元和其它數目的空格雖然都可以被直譯器識別,但不符合編碼規範。支援Tab字元和其它數目的空格僅僅是為相容很舊的Python程式和某些有問題的編輯程式。偏向使用Tab字元的程式設計師可以設定文字編輯器將Tab鍵轉換為4個空格實現縮排而不致導致縮排錯誤。

  Python的表示式寫法與C/C++類似。只是在某些寫法有所差別。  »> [x + 3 for x in range(4)] [3, 4, 5, 6] »> sum(x * x for x in range(10)) 285  »> add = lambda x, y : x + y »> add(3, 2) 5  »> x, y=1, 2 #同時給x,y賦值,最終結果:x=1, y=2 特別地,可以使用以下這種形式來交換兩個變數的值:  »> x, y = y, x #最終結果:y=1, x=2

  Python的函式支援遞迴、預設引數值、可變引數、閉包,但不支援函式過載。為了增強程式碼的可讀性,可以在函式後書寫“文件字串”(Documentation Strings,或者簡稱docstrings),用於解釋函式的作用、引數的型別與意義、返回值型別與取值範圍等。可以使用內建函式codice_94列印出函式的使用幫助。比如: »> def randint(a, b):... "Return random integer in range [a, b], including both end points." »> help(randint) Help on function randint in module __main__:  randint(a, b) 函式呼叫時,實參可以如同C語言那樣按照位置與形參匹配;也可以按照命名引數形式呼叫,即 param_name=value 形式的實參。在一個函式呼叫的實參表中,關鍵字引數必須出現在位置引數之後。  可變引數用*args或**dictargs表示,即在形式引數名字前加一個*號,表示這是由多個實參組成的可變引數,該形參視作tuple資料型別;在形式引數名字前加**號,表示這是由多個實參組成的可變引數,該形參視作dict資料型別。實際上,在一個"集合(collection)型別"(包括set、list、tuple甚至bytes、str等)的變數前加一個*號,獲得了其中所有元素作為多個物件。  Python的函式作為第一類物件,具有和普通變數平等的地位。函式一旦定義,即可視作為普通物件,其形參會保留上次呼叫時的值,但在函式新的一次呼叫時會被實參值覆蓋。因此函式的預設引數值在連續多次呼叫該函式時,如果不被實參值覆蓋,就會一直保留。例如:  def f(a, L=[]):  print(f(1)) print(f(2)) print(f(3))  結果為: 函式的預設引數值在函式被定義時被一次性計算其初值。  Python的函式實參與形參之間的結合是傳遞"物件的引用"。這是因為Python的賦值操作是把(變數)名字繫結到物件上。形實結合也是這種方式。如果形參繫結到一個可變的物件,則通過形參對此物件內容的修改,在函式外也是可見的。如果形參繫結到一個不可變的物件,則通過形參是不能修改此物件內容,但可以把形參重新繫結到其它物件上,這並不影響函式外的物件的值。例如:  def foo(a): def bar(b):  a=[] b=100 foo(a) bar(b) print(a) #結果為['haha'] print(b) #結果為100

  Python採用動態型別系統。Python不會在編譯期檢查物件是否擁有被呼叫的方法或者屬性,而是直至執行時,才做出檢查。所以操作物件時可能會丟擲異常。不過,雖然Python採用動態型別系統,它同時也是強型別的。Python禁止沒有明確定義的操作,比如數字加字串。  與其它面嚮物件語言一樣,Python允許程式設計師定義型別。構造一個物件只需要像函式一樣呼叫型別即可,比如,對於前面定義的codice_95型別,使用codice_96。型別本身也是特殊型別codice_97的物件(codice_97型別本身也是codice_97物件),這種特殊的設計允許對型別進行反射程式設計。  Python內建多種資料型別。下面這個列表簡要地描述了Python內建資料型別(適用於Python 3.x):  除了各種資料型別,Python語言還用型別來表示函式、模組、型別本身、物件的方法、編譯後的Python程式碼、執行時資訊等等。因此,Python具備很強的動態性。

  物件導向開發方法是指繫結到物件的函式。呼叫物件方法的語法是codice_100。它等價於呼叫codice_101。當定義物件方法時,必須顯式地定義第一個引數,一般該引數名都使用codice_102,用於訪問物件的內部資料。這裡的codice_102相當於C++, Java裡面的codice_104變數,但是我們還可以使用任何其它合法的引數名,比如codice_104和codice_106等,codice_102與C++,Java裡面的codice_104不完全一樣,它可以被看作是一個習慣性的用法,我們傳入任何其它的合法名稱都行,比如: class Fish(object): class User(object):  f=Fish() Fish.eat(f, "earthworm") f.eat("earthworm")  u = User('username')  u.name Python支援一些以“__”開始並以“__”結束的特殊方法名,它們用於實現運算子過載和實現多種特殊功能。

  Python使用與C、Java類似的運算子,支援整數與浮點數的數學運算。同時還支援複數運算與無窮位數(實際受限於計算機的能力)的整數運算。除了求絕對值函式codice_109外,大多數數學函式處於codice_110和codice_111模組內。前者用於實數運算,而後者用於複數運算。使用時需要先匯入它們,比如: »> import math »> print(math.sin(math.pi/2)) 1.0 codice_112模組用於支援分數運算;codice_113模組用於支援高精度的浮點數運算;第三方庫codice_114用於支援數學符號運算。  Python定義求餘執行codice_115的值處於開區間codice_116內,如果codice_117是負數,開區間變為codice_118。這是一個很常見的定義方式。不過其實它依賴於整除的定義。為了讓方程式:codice_119恆真,整除執行需要向負無窮小方向取值。比如codice_120的結果是codice_121,而codice_122的結果卻是codice_123。這個演算法與其它很多程式語言不一樣,需要注意,它們的整除運算會向0的方向取值。  Python允許像數學的常用寫法那樣連著寫兩個比較執行符。比如codice_124與codice_125等價。C++的結果與Python不一樣,首先它會先計算codice_126,根據兩者的大小獲得0或者1兩個值之一,然後再與c進行比較。

  Python擁有一個強大的標準庫。Python語言的核心只包含數字、字串、列表、字典、檔案等常見型別和函式,而由Python標準庫提供了系統管理、網路通訊、文字處理、資料庫介面、圖形系統、XML處理等額外的功能。  Python標準庫的主要功能有:  Python社群提供了大量的第三方模組,使用方式與標準庫類似。它們的功能覆蓋科學計算、Web開發、資料庫介面、圖形系統多個領域。第三方模組可以使用Python或者C語言編寫。SWIG,SIP常用於將C語言編寫的程式庫轉化為Python模組。Boost C++ Libraries包含了一組函式庫,Boost.Python,使得以Python或C++編寫的程式能互相呼叫。Python常被用做其他語言與工具之間的“膠水”語言。

  一個在標準輸出裝置上輸出Hello World的簡單程式,這種程式通常作為開始學習程式語言時的第一個程式:  print("Hello, world!")  print "Hello, world!"

  Python也可以單步直譯執行。執行Python直譯器進入互動式命令列的環境,你可以在提示符號codice_127旁輸入codice_128,按Enter鍵輸出結果:  »> print('Hello, world!') Hello, world!  »> print "Hello, world!" Hello, world! 注意,在3.0及以上版本中,需要在codice_129周圍加上圓括號。其原因是在3.0及以上版本中,print命令不再是一個關鍵字,而是一個函式。

  雖然Python可能被粗略地分類為「指令碼語言」,但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高階動態程式語言,原因是「指令碼語言」泛指僅作簡單程式設計任務的語言,如shell script、VBScript等只能處理簡單任務的程式語言,並不能與Python相提並論。在Google內部的很多專案,例如Google應用服務引擎使用C++編寫效能要求極高的部分,然後用Python或Java/Go呼叫相應的模組。《Python技術手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004年,Python已在Google內部使用,Google召募許多Python高手,但在這之前就已決定使用Python。他們的目的是儘量使用Python,在不得已時改用C++;在操控硬體的場合使用C++,在快速開發時候使用Python。”

  Python經常被用於Web開發。比如,通過mod_wsgi模組,Apache可以執行用Python編寫的Web程式。使用Python語言編寫的Gunicorn作為Web伺服器,也能夠執行Python語言編寫的Web程式。Python定義了WSGI標準應用介面來協調Http伺服器與基於Python的Web程式之間的溝通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可以讓程式設計師輕鬆地開發和管理複雜的Web程式。  Python對於各種網路協定的支援很完善,因此經常被用於編寫伺服器軟體、網路爬蟲。第三方函式庫Twisted支援非同步線上編寫程式和多數標準的網路協定(包含客戶端和伺服器),並且提供了多種工具,被廣泛用於編寫高效能的伺服器軟體。另有gevent這個流行的第三方庫,同樣能夠支援高效能高併發的網路開發。

  Python本身包含的Tkinter庫能夠支援簡單的GUI開發。但是越來越多的Python程式設計師選擇wxPython或者PyQt等GUI套件來開發跨平臺的桌面軟體。使用它們開發的桌面軟體執行速度快,與使用者的桌面環境相契合。通過PyInstaller還能將程式釋出為獨立的安裝程式包。

  在很多作業系統裡,Python是標準的系統元件。大多數Linux發行版和Mac OS X都整合了Python,可以在終端機下直接執行Python。有一些Linux發行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。在RPM系列Linux發行版中,有一些系統元件就是用Python編寫的。Gentoo Linux使用Python來編寫它的Portage軟體包管理系統。Python標準庫包含了多個呼叫作業系統功能的函式庫。通過pywin32這個第三方軟體包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程式能夠直接呼叫.Net Framework。

  NumPy、SciPy、Matplotlib可以讓Python程式設計師編寫科學計算程式。有些公司會使用Scons代替make構建C++程式。  很多遊戲使用C++編寫圖形顯示等高效能模組,而使用Python或者Lua編寫遊戲的邏輯、伺服器。相較於Python,Lua的功能更簡單、體積更小;而Python則支援更多的特性和資料型別。很多遊戲,如EVE Online使用Python來處理遊戲中繁多的邏輯。  YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。OLPC的作業系統Sugar專案的大多數軟體都是使用Python編寫。

  Python是一門跨平臺的指令碼語言,Python規定了一個Python語法規則,根據該規則可編寫Python直譯器。

  

  很多並非整合開發環境軟體的文字編輯器,也對Python有不同程度的支援,並且加上專門為Python設計的編輯器外掛也會有很高的可用性。

  適用於Python的整合開發環境(IDE)軟體,除了標準二進位制釋出包所附的IDLE之外,還有許多其他選擇。其中有些軟體設計有語法著色、語法檢查、執行除錯、自動補全、智慧感知等便利功能。由於Python的跨平臺出身,這些軟體往往也具備各種作業系統的版本或一定的移植性。

  Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函式。基於早期Python版本而能正常執行於Python 2.6並無警告的程式可以通過一個2 to 3的轉換工具無縫遷移到Python 3.0。  新的Python程式建議使用Python 3.0版本的語法。除非執行環境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, PIL等。大多數第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然後使用Python 2.6, Python 2.7來執行。  Python 2.7被確定為最後一個Python 2.x版本,它除了支援Python 2.x語法外,還支援部分Python 3.1語法。

  Python 3.0的變化主要在以下幾個方面:  print "fish" print ("fish") #注意print後面有個空格 print("fish") #print()不能帶有任何其它引數 然而,Python 2.6實際已經支援新的codice_131語法:  from __future__ import print_function print("fish", "panda", sep=', ')  from __future__ import unicode_literals print(repr("fish"))  from __future__ import division print(3/2)  for k, v in d.items(): return result  result = set() for x in stuff: return result  def send_mail(from_: str, to: str, title: str, body: str) -> bool:
Python( )是一種廣泛使用的解釋型、高階程式設計、通用型程式語言,由吉多·範羅蘇姆創造,第一版釋出於1991年。Python是ABC語言的後繼者,也可以視之為一種使用傳統的LISP方言。Python的設計哲學強調程式碼的可讀性和簡潔的語法(尤其是使用空格縮排劃分程式碼塊,而非使用大括號或者關鍵詞)。相比於C++或Java,Python讓開發者能夠用更少的程式碼表達想法。不管是小型還是大型程式,該語言都試圖讓程式的結構清晰明瞭。