<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Python

      Python英國(guó)發(fā)音:/?pa?θ?n/ 美國(guó)發(fā)音:/?pa?θɑ?n/),是一種面向?qū)ο?/a>、直譯式電腦編程語(yǔ)言,具有近二十年的發(fā)展歷史,成熟且穩(wěn)定。它包含了一組完善而且容易理解的標(biāo)準(zhǔn)庫(kù),能夠輕松完成很多常見(jiàn)的任務(wù)。它的語(yǔ)法簡(jiǎn)捷和清晰,盡量使用無(wú)異義的英語(yǔ)單詞,與其它大多數(shù)程序設(shè)計(jì)語(yǔ)言使用大括號(hào)不一樣,它使用縮進(jìn)來(lái)定義語(yǔ)句塊。

      SchemeRubyPerlTcl等動(dòng)態(tài)語(yǔ)言一樣,Python具備垃圾回收功能,能夠自動(dòng)管理內(nèi)存使用。它經(jīng)常被當(dāng)作腳本語(yǔ)言用于處理系統(tǒng)管理任務(wù)和網(wǎng)絡(luò)程序編寫(xiě),然而它也非常適合完成各種高級(jí)任務(wù)。Python虛擬機(jī)本身幾乎可以在所有的作業(yè)系統(tǒng)中運(yùn)行。使用一些諸如py2exePyPyPyInstaller之類(lèi)的工具可以將Python源代碼轉(zhuǎn)換成可以脫離Python解釋器運(yùn)行的程序。

      Python的官方解釋器是CPython,該解釋器用C語(yǔ)言編寫(xiě),是一個(gè)由社群驅(qū)動(dòng)的自由軟件,目前由Python軟件基金會(huì)管理。

      Python支持命令式程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)函數(shù)式編程面向側(cè)面的程序設(shè)計(jì)泛型編程多種編程范式。

       

       

      歷史[編輯]

      Python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,吉多·范羅蘇姆為了在阿姆斯特丹打發(fā)時(shí)間,決心開(kāi)發(fā)一個(gè)新的腳本解釋程序,作為ABC語(yǔ)言的一種繼承。之所以選中Python作為程序的名字,是因?yàn)樗且粋€(gè)蒙提·派森(Monty Python)的飛行馬戲團(tuán)的愛(ài)好者。ABC是由吉多參加設(shè)計(jì)的一種教學(xué)語(yǔ)言。就吉多本人看來(lái),ABC這種語(yǔ)言非常優(yōu)美和強(qiáng)大,是專(zhuān)門(mén)為非專(zhuān)業(yè)程序員設(shè)計(jì)的。但是ABC語(yǔ)言并沒(méi)有成功,究其原因,吉多認(rèn)為是非開(kāi)放造成的。吉多決心在Python中避免這一錯(cuò)誤,并取得了非常好的效果,完美結(jié)合了C和其他一些語(yǔ)言。[5]

      就這樣,Python在吉多手中誕生了。實(shí)際上,第一個(gè)實(shí)現(xiàn)是在Mac機(jī)上。可以說(shuō),Python是從ABC發(fā)展起來(lái),主要受到了Modula-3(另一種相當(dāng)優(yōu)美且強(qiáng)大的語(yǔ)言,為小型團(tuán)體所設(shè)計(jì)的)的影響。并且結(jié)合了Unix shell和C的習(xí)慣。

      目前吉多仍然是Python的主要開(kāi)發(fā)者,決定整個(gè)Python語(yǔ)言的發(fā)展方向。Python社群經(jīng)常稱(chēng)呼他是仁慈的獨(dú)裁者

      Python 2.0于2000年10月16日發(fā)布,增加了實(shí)現(xiàn)完整的垃圾回收,并且支持Unicode。同時(shí),整個(gè)開(kāi)發(fā)過(guò)程更加透明,社群對(duì)開(kāi)發(fā)進(jìn)度的影響逐漸擴(kuò)大。Python 3.0于2008年12月3日發(fā)布,此版不完全兼容之前的Python源代碼。不過(guò),很多新特性后來(lái)也被移植到舊的Python 2.6/2.7版本。

      Python是完全面向?qū)ο蟮恼Z(yǔ)言。函數(shù)、模塊、數(shù)字、字符串都是對(duì)象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。Python支持重載運(yùn)算符,因此Python也支持泛型設(shè)計(jì)。相對(duì)于Lisp這種傳統(tǒng)的函數(shù)式編程語(yǔ)言,Python對(duì)函數(shù)式設(shè)計(jì)只提供了有限的支持。有兩個(gè)標(biāo)準(zhǔn)庫(kù)(functools, itertools)提供了HaskellStandard ML中久經(jīng)考驗(yàn)的函數(shù)式程序設(shè)計(jì)工具。

      雖然Python可能被粗略地分類(lèi)為“腳本語(yǔ)言”(script language),但實(shí)際上一些大規(guī)模軟件開(kāi)發(fā)項(xiàng)目例如Zope、Mnet及BitTorrentGoogle也廣泛地使用它。Python的支持者較喜歡稱(chēng)它為一種高級(jí)動(dòng)態(tài)編程語(yǔ)言,原因是“腳本語(yǔ)言”泛指僅作簡(jiǎn)單程序設(shè)計(jì)任務(wù)的語(yǔ)言,如shell script、VBScript等只能處理簡(jiǎn)單任務(wù)的編程語(yǔ)言,并不能與Python相提并論。

      Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語(yǔ)言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用CC++Cython來(lái)編寫(xiě)擴(kuò)充模塊。Python編譯器本身也可以被集成到其它需要腳本語(yǔ)言的程序內(nèi)。因此,很多人還把Python作為一種“膠水語(yǔ)言”(glue language)使用。使用Python將其他語(yǔ)言編寫(xiě)的程序進(jìn)行集成和封裝。在Google內(nèi)部的很多項(xiàng)目,例如Google Engine使用C++編寫(xiě)性能要求極高的部分,然后用Python或Java/Go調(diào)用相應(yīng)的模塊。[6]《Python技術(shù)手冊(cè)》的作者馬特利(Alex Martelli)說(shuō):“這很難講,不過(guò),2004年,Python已在Google內(nèi)部使用,Google召募許多Python高手,但在這之前就已決定使用Python。他們的目的是盡量使用Python,在不得已時(shí)改用C++;在操控硬件的場(chǎng)合使用C++,在快速開(kāi)發(fā)時(shí)候使用Python。”[7]

      設(shè)計(jì)哲學(xué)與定位[編輯]

      Python的設(shè)計(jì)哲學(xué)是“優(yōu)雅”、“明確”、“簡(jiǎn)單”。因此其對(duì)手Perl語(yǔ)言中“總是有多種方法來(lái)做同一件事”的理念在Python開(kāi)發(fā)者中通常是難以忍受的。Python開(kāi)發(fā)者的哲學(xué)是“用一種方法,最好是只有一種方法來(lái)做一件事”。在設(shè)計(jì)Python語(yǔ)言時(shí),如果面臨多種選擇,Python開(kāi)發(fā)者一般會(huì)拒絕花俏的語(yǔ)法,而選擇明確沒(méi)有或者很少有歧義的語(yǔ)法。由于這種設(shè)計(jì)觀念的差異,Python源代碼通常被認(rèn)為比Perl具備更好的可讀性,并且能夠支撐大規(guī)模的軟件開(kāi)發(fā)。這些準(zhǔn)則被稱(chēng)為“Python格言”。在Python解釋器內(nèi)運(yùn)行import this可以獲得完整的列表。

      >>> import this

      The Zen of Python

      by Tim Peters

      Beautiful is better than ugly.
      Explicit is better than implicit.
      Simple is better than complex.
      Complex is better than complicated.
      Flat is better than nested.
      Sparse is better than dense.
      Readability counts.
      Special cases aren't special enough to break the rules.
      Although practicality beats purity.
      Errors should never pass silently.
      Unless explicitly silenced.
      In the face of ambiguity, refuse the temptation to guess.
      There should be one-- and preferably only one --obvious way to do it.
      Although that way may not be obvious at first unless you're Dutch.
      Now is better than never.
      Although never is often better than *right* now.
      If the implementation is hard to explain, it's a bad idea.
      If the implementation is easy to explain, it may be a good idea.
      Namespaces are one honking great idea -- let's do more of those!

      --From: Python.org

      Python開(kāi)發(fā)人員盡量避開(kāi)不成熟或者不重要的優(yōu)化。一些針對(duì)非重要部位的加快運(yùn)行速度的補(bǔ)丁通常不會(huì)被合并到Python內(nèi)。再加上因?yàn)镻ython屬于動(dòng)態(tài)類(lèi)型語(yǔ)言,動(dòng)態(tài)類(lèi)型語(yǔ)言是在運(yùn)行期間檢查數(shù)據(jù)的類(lèi)型,不得不保持描述變量值的實(shí)際類(lèi)型標(biāo)記,程序在每次操作變量時(shí),需要執(zhí)行數(shù)據(jù)依賴(lài)分支,而靜態(tài)類(lèi)型語(yǔ)言相對(duì)于動(dòng)態(tài)類(lèi)型語(yǔ)言,在聲明變量時(shí)已經(jīng)指定了數(shù)據(jù)類(lèi)型和表示方法,根據(jù)這一原理導(dǎo)致Python相對(duì)于C、Visual Basic等靜態(tài)類(lèi)型語(yǔ)言來(lái)說(shuō)運(yùn)行速度較慢。不過(guò),根據(jù)二八定律,大多數(shù)程序?qū)λ俣纫蟛桓摺T谀承?duì)運(yùn)行速度要求很高的情況,Python設(shè)計(jì)師傾向于使用JIT技術(shù),或者用使用C/C++語(yǔ)言改寫(xiě)這部分程序。[來(lái)源請(qǐng)求]目前可用的JIT技術(shù)是PyPy

      應(yīng)用范圍[編輯]

      Web程序[編輯]

      Python經(jīng)常被用于Web開(kāi)發(fā)。比如,通過(guò)mod_wsgi模塊,Apache可以運(yùn)行用Python編寫(xiě)的Web程序。使用Python語(yǔ)言編寫(xiě)的Gunicorn作為Web服務(wù)器,也能夠運(yùn)行Python語(yǔ)言編寫(xiě)的Web程序。Python定義了WSGI標(biāo)準(zhǔn)應(yīng)用接口來(lái)協(xié)調(diào)Http服務(wù)器與基于Python的Web程序之間的溝通。一些Web框架,如DjangoPyramidTurboGearsweb2pyZopeFlask等,可以讓程序員輕松地開(kāi)發(fā)和管理復(fù)雜的Web程序。

      Python對(duì)于各種網(wǎng)絡(luò)協(xié)議的支持很完善,因此經(jīng)常被用于編寫(xiě)服務(wù)器軟件、網(wǎng)絡(luò)蠕蟲(chóng)。第三方庫(kù)Twisted支持異步在線編寫(xiě)程序和多數(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議(包含客戶(hù)端和服務(wù)器),并且提供了多種工具,被廣泛用于編寫(xiě)高性能的服務(wù)器軟件。另有gevent這個(gè)流行的第三方庫(kù),同樣能夠支持高性能高并發(fā)的網(wǎng)絡(luò)開(kāi)發(fā)。

      GUI開(kāi)發(fā)[編輯]

      Python本身包含的Tkinter庫(kù)能夠支持簡(jiǎn)單的GUI開(kāi)發(fā)。但是越來(lái)越多的Python程序員選擇wxPython或者PyQt來(lái)開(kāi)發(fā)跨平臺(tái)的桌面軟件。使用它們開(kāi)發(fā)的桌面軟件運(yùn)行速度快,與用戶(hù)的桌面環(huán)境相契合。通過(guò)PyInstaller還能將程序發(fā)布為獨(dú)立的安裝程序包。與C++相比較,使用Python開(kāi)發(fā)桌面軟件通常更快更容易。

      操作系統(tǒng)[編輯]

      在很多操作系統(tǒng)里,Python是標(biāo)準(zhǔn)的系統(tǒng)組件。大多數(shù)Linux發(fā)布版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端機(jī)下直接運(yùn)行Python。有一些Linux發(fā)布版的安裝器使用Python語(yǔ)言編寫(xiě),比如Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來(lái)編寫(xiě)它的Portage包管理系統(tǒng)。Python標(biāo)準(zhǔn)庫(kù)包含了多個(gè)調(diào)用作業(yè)系統(tǒng)功能的庫(kù)。通過(guò)pywin32這個(gè)第三方軟件包,Python能夠訪問(wèn)Windows的COM服務(wù)及其它Windows API。使用IronPython,Python程序能夠直接調(diào)用.Net Framework。一般說(shuō)來(lái),Python編寫(xiě)的系統(tǒng)管理腳本在可讀性、性能、源代碼重用度、擴(kuò)展性幾方面都優(yōu)于普通的shell腳本。

      其他[編輯]

      NumPySciPyMatplotlib可以讓Python程序員編寫(xiě)科學(xué)計(jì)算程序。有些公司會(huì)使用Scons代替make構(gòu)建C++程序。

      很多游戲使用C++編寫(xiě)圖形顯示等高性能模塊,而使用Python或者Lua編寫(xiě)游戲的邏輯、服務(wù)器。相較于Python,Lua的功能更簡(jiǎn)單、體積更小;而Python則支持更多的特性和數(shù)據(jù)類(lèi)型。很多游戲,如EVE Online使用Python來(lái)處理游戲中繁多的邏輯。

      YouTube、Google、Yahoo!、NASA都在內(nèi)部大量地使用Python。OLPC的作業(yè)系統(tǒng)Sugar項(xiàng)目的大多數(shù)軟件都是使用Python編寫(xiě)。

      Hello World[編輯]

      一個(gè)在標(biāo)準(zhǔn)輸出設(shè)備上輸出Hello World的簡(jiǎn)單程序,這種程序通常作為開(kāi)始學(xué)習(xí)編程語(yǔ)言時(shí)的第一個(gè)程序:

      • 適用于Python 3.0以上版本以及Python 2.6、Python 2.7
      print("Hello, world!")
      
      • 適用于Python 2.6以下版本以及Python 2.6、Python 2.7
      print "Hello, world!"
      

      將這行程序碼保存為myhello.py。然后在Linux終端機(jī)下輸入python myhello.py,或者在Windows命令編輯字符下輸入myhello.py運(yùn)行。

      單步運(yùn)行[編輯]

      Python也可以單步直譯運(yùn)行。運(yùn)行Python解釋器進(jìn)入交互式命令行的環(huán)境,你可以在提示符號(hào)>>>旁輸入print("Hello, world!"),按Enter鍵輸出結(jié)果:

      • 適用于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!
      

      注意,低于3.0版本的Python,"Hello, world!"周?chē)恍枰ㄌ?hào)。Python 3.x與Python 2.x的print語(yǔ)法是不一樣的。

      語(yǔ)法[編輯]

      Python的設(shè)計(jì)目標(biāo)之一是讓代碼具備高度的可閱讀性。它設(shè)計(jì)時(shí)盡量使用其它語(yǔ)言經(jīng)常使用的標(biāo)點(diǎn)符號(hào)和英文單字,讓代碼看起來(lái)整潔美觀。它不像其他的靜態(tài)語(yǔ)言如C、Pascal那樣需要書(shū)寫(xiě)聲明語(yǔ)句,也不像它們的語(yǔ)法那樣經(jīng)常有特殊情況。

      縮進(jìn)[編輯]

      Python開(kāi)發(fā)者有意讓違反了縮進(jìn)規(guī)則的程序不能通過(guò)編譯,以此來(lái)強(qiáng)迫程序員養(yǎng)成良好的編程習(xí)慣。并且Python語(yǔ)言利用縮進(jìn)表示語(yǔ)句塊的開(kāi)始和退出(Off-side規(guī)則),而非使用花括號(hào)或者某種關(guān)鍵字。增加縮進(jìn)表示語(yǔ)句塊的開(kāi)始,而減少縮進(jìn)則表示語(yǔ)句塊的退出。縮進(jìn)成為了語(yǔ)法的一部分。例如if語(yǔ)句:

      if age < 21:
          print("你不能買(mǎi)酒。")
          print("不過(guò)你能買(mǎi)口香糖。")
      print("這句話處?kù)秈f語(yǔ)句塊的外面。")
      
      • 注:上述例子為Python 3.0以上版本的代碼。

      根據(jù)PEP的規(guī)定,必須使用4個(gè)空格來(lái)表示每級(jí)縮進(jìn)。使用Tab字符和其它數(shù)目的空格雖然都可以編譯通過(guò),但不符合編碼規(guī)范。支持Tab字符和其它數(shù)目的空格僅僅是為兼容很舊的Python程序和某些有問(wèn)題的編輯程序。

      語(yǔ)句和控制流[編輯]

      • if語(yǔ)句,當(dāng)條件成立時(shí)運(yùn)行語(yǔ)句塊。經(jīng)常與elseelif(相當(dāng)于else if)配合使用。
      • for語(yǔ)句,遍列列表、字符串、字典、集合等迭代器,依次處理迭代器中的每個(gè)元素。
      • while語(yǔ)句,當(dāng)條件為真時(shí),循環(huán)運(yùn)行語(yǔ)句塊。
      • try語(yǔ)句。與except, finally, else配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。
      • class語(yǔ)句。用于定義類(lèi)型。
      • def語(yǔ)句。用于定義函數(shù)和類(lèi)型的方法。
      • pass語(yǔ)句。表示此行為空,不運(yùn)行任何操作。
      • assert語(yǔ)句。用于程序調(diào)適階段時(shí)測(cè)試運(yùn)行條件是否滿(mǎn)足。
      • with語(yǔ)句。Python2.6以后定義的語(yǔ)法,在一個(gè)場(chǎng)景中運(yùn)行語(yǔ)句塊。比如,運(yùn)行語(yǔ)句塊前加鎖,然后在語(yǔ)句塊運(yùn)行退出后釋放鎖。
      • yield語(yǔ)句。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。自從Python 2.5版本以后。這個(gè)語(yǔ)句變成一個(gè)運(yùn)算符。
      • raise語(yǔ)句。拋出一個(gè)異常。
      • import語(yǔ)句。導(dǎo)入一個(gè)模塊或包。常用寫(xiě)法:from module import name, import module as name, from module import name as anothername

      表達(dá)式[編輯]

      Python的表達(dá)式寫(xiě)法與C/C++類(lèi)似。只是在某些寫(xiě)法有所差別。

      • 主要的算術(shù)運(yùn)算符與C/C++類(lèi)似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負(fù)、乘法、除法、整除、乘方、取補(bǔ)、取模。>>, <<表示右移和左移。&, |, ^表示二進(jìn)制的AND, OR, XOR運(yùn)算。>, <, ==, !=, <=, >=用于比較兩個(gè)表達(dá)式的值,分別表示大于、小于、等于、不等于、小于等于、大于等于。在這些運(yùn)算符里面,~, |, ^, &, <<, >>必須應(yīng)用于整數(shù)。
      • Python使用andornot表示邏輯運(yùn)算。
      • is, is not用于比較兩個(gè)變量是否是同一個(gè)對(duì)象。in, not in用于判斷一個(gè)對(duì)象是否屬于另外一個(gè)對(duì)象。
      • Python支持字典、集合、列表的推導(dǎo)式(dict comprehension, set comprehension, list comprehension)。比如:
      >>> [x + 3 for x in range(4)]
      [3, 4, 5, 6]
      >>> {x + 3 for x in range(4)}
      {3, 4, 5, 6}
      >>> {x: x + 3 for x in range(4)}
      {0: 3, 1: 4, 2: 5, 3: 6}
      
      • Python支持“迭代表達(dá)式”(generator comprehension),比如計(jì)算0-9的平方和:
      >>> sum(x * x for x in range(10))
      285
      
      • Python使用lambda表示匿名函數(shù)。匿名函數(shù)體只能是表達(dá)式。比如:
      >>> add = lambda x, y : x + y
      >>> add(3, 2)
      5
      
      • Python使用y if cond else x表示條件表達(dá)式。意思是當(dāng)cond為真時(shí),表達(dá)式的值為y,否則表達(dá)式的值為x。相當(dāng)于C++和Java里的cond?y:x
      • Python區(qū)分列表(list)和元組(tuple)兩種類(lèi)型。list的寫(xiě)法是[1,2,3],而tuple的寫(xiě)法是(1,2,3)。可以改變list中的元素,而不能改變tuple。在某些情況下,tuple的括號(hào)可以省略。tuple對(duì)于賦值語(yǔ)句有特殊的處理。因此,可以同時(shí)賦值給多個(gè)變量,比如:
      >>> x, y=1, 2 #同時(shí)給x,y賦值,最終結(jié)果:x=1, y=2
      

      特別地,可以使用以下這種形式來(lái)交換兩個(gè)變量的值:

      >>> x, y = y, x #最終結(jié)果:y=1, x=2
      
      • Python使用'(單引號(hào))和"(雙引號(hào))來(lái)表示字符串。與Perl、Unix Shell語(yǔ)言或者Ruby、Groovy等語(yǔ)言不一樣,兩種符號(hào)作用相同。一般地,如果字符串中出現(xiàn)了雙引號(hào),就使用單引號(hào)來(lái)表示字符串;反之則使用雙引號(hào)。如果都沒(méi)有出現(xiàn),就依個(gè)人喜好選擇。出現(xiàn)在字符串中的\(反斜杠)被解釋為特殊字符,比如\n表示換行符。表達(dá)式前加r指示Python不解釋字符串中出現(xiàn)的\。這種寫(xiě)法通常用于編寫(xiě)正則表達(dá)式或者Windows文件路徑。
      • Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類(lèi)型有str, bytes, list, tuple等。它的語(yǔ)法是...[left:right]或者...[left:right:stride]。假定nums變量的值是[1, 3, 5, 7, 8, 13, 20],那么下面幾個(gè)語(yǔ)句為真:
      • nums[2:5] == [5, 7, 8]從下標(biāo)為2的元素切割到下標(biāo)為5的元素,但不包含下標(biāo)為5的元素。
      • nums[1:] == [3, 5, 7, 8, 13, 20]切割到最后一個(gè)元素。
      • nums[:-3] == [1, 3, 5, 7]從最開(kāi)始的元素一直切割到倒數(shù)第3個(gè)元素。
      • nums[:] == [1, 3, 5, 7, 8, 13, 20]返回所有元素。改變新的列表不會(huì)影響到nums。
      • nums[1:5:2] == [3, 7]從下標(biāo)為1的元素切割到下標(biāo)為5的元素但不包含下標(biāo)為5的元素,且步長(zhǎng)為2

      函數(shù)[編輯]

      Python的函數(shù)支持遞歸、默認(rèn)參數(shù)值、可變參數(shù)、閉包,但不支持函數(shù)重載。為了增強(qiáng)代碼的可讀性,可以在函數(shù)后書(shū)寫(xiě)“文檔字符串”(Documentation Strings,或者簡(jiǎn)稱(chēng)docstrings),用于解釋函數(shù)的作用、參數(shù)的類(lèi)型與意義、返回值類(lèi)型與取值范圍等。可以使用內(nèi)置函數(shù)help()打印出函數(shù)的使用幫助。比如:

      >>> 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)
          Return random integer in range [a, b], including both end points.
      

      函數(shù)調(diào)用時(shí),實(shí)參可以如同C語(yǔ)言那樣按照位置與形參匹配;也可以按照keyword argument形式調(diào)用,即param_name=value形式的實(shí)參。在一個(gè)函數(shù)調(diào)用的實(shí)參表中,keyword argument必須出現(xiàn)在位置參數(shù)之后。

      可變參數(shù)用*args或**dictargs表示,即在形式參數(shù)名字前加一個(gè)*號(hào),表示這是由多個(gè)實(shí)參組成的可變參數(shù),該形參視作tuple數(shù)據(jù)類(lèi)型;在形式參數(shù)名字前加**號(hào),表示這是由多個(gè)實(shí)參組成的可變參數(shù),該形參視作dict數(shù)據(jù)類(lèi)型。實(shí)際上,在一個(gè)collection類(lèi)型(包括set、list、tuple甚至bytes、str等)的變量前加一個(gè)*號(hào),獲得了其中所有元素作為多個(gè)對(duì)象。

      Python的函數(shù)作為first-class citizen,具有和普通變量平等的地位。函數(shù)一旦定義,即可視作為普通對(duì)象,其形參會(huì)保留上次調(diào)用時(shí)的值,但在函數(shù)新的一次調(diào)用時(shí)會(huì)被實(shí)參值覆蓋。因此函數(shù)的缺省參數(shù)值在連續(xù)多次調(diào)用該函數(shù)時(shí),如果不被實(shí)參值覆蓋,就會(huì)一直保留。例如:

      def f(a, L=[]):
          L.append(a)
          return L
       
      print(f(1))
      print(f(2))
      print(f(3))
      

      結(jié)果為:

      [1]
      [1, 2]
      [1, 2, 3]
      

      函數(shù)的缺省參數(shù)值在函數(shù)被定義時(shí)被一次性計(jì)算其初值。

      Python的函數(shù)實(shí)參與形參之間的結(jié)合是傳遞對(duì)象的引用[8]。這是因?yàn)镻ython的賦值操作是把(變量)名字綁定到對(duì)象上。形實(shí)結(jié)合也是這種方式。如果形參綁定到一個(gè)mutable對(duì)象,則通過(guò)形參對(duì)此對(duì)象內(nèi)容的修改,在函數(shù)外也是可見(jiàn)的。如果形參綁定到一個(gè)immutable對(duì)象,則通過(guò)形參是不能修改此對(duì)象內(nèi)容,但可以把形參重新綁定到其它對(duì)象上,這并不影響函數(shù)外的對(duì)象的值。例如:

      def foo(a):
          a.append('haha')
       
      def bar(b):
          b=101 #實(shí)際上是重新綁定了另一個(gè)整形對(duì)象101
       
      a=[]
      b=100
      foo(a)
      bar(b)
      print(a) #結(jié)果為['haha']
      print(b) #結(jié)果為100
      

      面向?qū)ο箝_(kāi)發(fā)方法[編輯]

      面向?qū)ο箝_(kāi)發(fā)方法是指綁定到對(duì)象的函數(shù)。調(diào)用對(duì)象方法的語(yǔ)法是instance.method(arguments)。它等價(jià)于調(diào)用Class.method(instance, arguments)。當(dāng)定義對(duì)象方法時(shí),必須顯式地定義第一個(gè)參數(shù),一般該參數(shù)名都使用self,用于訪問(wèn)對(duì)象的內(nèi)部數(shù)據(jù)。這里的self相當(dāng)于C++, Java里面的this變量,但是我們還可以使用任何其它合法的參數(shù)名,比如thismine等,self與C++,Java里面的this不完全一樣,它可以被看作是一個(gè)習(xí)慣性的用法,我們傳入任何其它的合法名稱(chēng)都行,比如:

      class Fish:
          def eat(self, food):
              if food is not None:
                  self.hungry=False
      class User:
          def __init__(myself, name):
              myself.name = name
       
      #構(gòu)造Fish的實(shí)例:
      f=Fish()
      #以下兩種調(diào)用形式是等價(jià)的:
      Fish.eat(f, "earthworm")
      f.eat("earthworm")
       
      u = User('username')
       
      u.name
      

      Python認(rèn)識(shí)一些以“__”開(kāi)始并以“__”結(jié)束的特殊方法名,它們用于實(shí)現(xiàn)運(yùn)算符重載和實(shí)現(xiàn)多種特殊功能。

      數(shù)據(jù)類(lèi)型&動(dòng)態(tài)類(lèi)型[編輯]

      Python采用動(dòng)態(tài)類(lèi)型系統(tǒng)。在編譯的時(shí)候,Python不會(huì)檢查對(duì)象是否擁有被調(diào)用的方法或者屬性,而是直至運(yùn)行時(shí),才做出檢查。所以操作對(duì)象時(shí)可能會(huì)拋出異常。不過(guò),雖然Python采用動(dòng)態(tài)類(lèi)型系統(tǒng),它同時(shí)也是強(qiáng)類(lèi)型的。Python禁止沒(méi)有明確定義的操作,比如數(shù)字加字符串。

      與其它面向?qū)ο笳Z(yǔ)言一樣,Python允許程序員定義類(lèi)型。構(gòu)造一個(gè)對(duì)象只需要像函數(shù)一樣調(diào)用類(lèi)型即可,比如,對(duì)于前面定義的Fish類(lèi)型,使用Fish()。類(lèi)型本身也是特殊類(lèi)型type的對(duì)象(type類(lèi)型本身也是type對(duì)象),這種特殊的設(shè)計(jì)允許對(duì)類(lèi)型進(jìn)行反射編程。

      Python內(nèi)置豐富的數(shù)據(jù)類(lèi)型。與Java、C++相比,這些數(shù)據(jù)類(lèi)型有效地減少代碼的長(zhǎng)度。下面這個(gè)列表簡(jiǎn)要地描述了Python內(nèi)置數(shù)據(jù)類(lèi)型(適用于Python 3.x):

      類(lèi)型描述例子
      str 一個(gè)由字符組成的不可更改的有序列。在Python 3.x里,字符串由Unicode字符組成。 'Wikipedia'
      "Wikipedia"
      """Spanning
      multiple
      lines"""
      bytes 一個(gè)由字節(jié)組成的不可更改的有序列。 b'Some ASCII'
      b"Some ASCII"
      list 可以包含多種類(lèi)型的可改變的有序列 [4.0, 'string', True]
      tuple 可以包含多種類(lèi)型的不可改變的有序列 (4.0, 'string', True)
      setfrozenset 與數(shù)學(xué)中集合的概念類(lèi)似。無(wú)序的、每個(gè)元素唯一。 {4.0, 'string', True}
      frozenset([4.0, 'string', True])
      dict或map 一個(gè)可改變的由鍵值對(duì)組成的無(wú)序列。 {'key1': 1.0, 3: False}
      int 精度不限的整數(shù) 42
      float 浮點(diǎn)數(shù)。精度與系統(tǒng)相關(guān)。 3.1415927
      complex 復(fù)數(shù) 3+2.7j
      bool 邏輯值。只有兩個(gè)值:真、假 True
      False

      除了各種數(shù)據(jù)類(lèi)型,Python語(yǔ)言還用類(lèi)型來(lái)表示函數(shù)、模塊、類(lèi)型本身、對(duì)象的方法、編譯后的Python代碼、運(yùn)行時(shí)信息等等。因此,Python具備很強(qiáng)的動(dòng)態(tài)性。

      數(shù)學(xué)運(yùn)算[編輯]

      Python使用與C、Java類(lèi)似的運(yùn)算符,支持整數(shù)與浮點(diǎn)數(shù)的數(shù)學(xué)運(yùn)算。同時(shí)還支持復(fù)數(shù)運(yùn)算與無(wú)窮位數(shù)(實(shí)際受限于計(jì)算機(jī)的能力)的整數(shù)運(yùn)算。除了求絕對(duì)值函數(shù)abs()外,大多數(shù)數(shù)學(xué)函數(shù)處于mathcmath模塊內(nèi)。前者用于實(shí)數(shù)運(yùn)算,而后者用于復(fù)數(shù)運(yùn)算。使用時(shí)需要先導(dǎo)入它們,比如:

      >>> import math
      >>> print(math.sin(math.pi/2))
      1.0
      

      fractions模塊用于支持分?jǐn)?shù)運(yùn)算;decimal模塊用于支持高精度的浮點(diǎn)數(shù)運(yùn)算。

      Python定義求余運(yùn)行a % b的值處于開(kāi)區(qū)間[0, b)內(nèi),如果b是負(fù)數(shù),開(kāi)區(qū)間變?yōu)?code>(b, 0]。這是一個(gè)很常見(jiàn)的定義方式。不過(guò)其實(shí)它依賴(lài)于整除的定義。為了讓方程式:b * (a // b) + a % b = a恒真,整除運(yùn)行需要向負(fù)無(wú)窮小方向取值。比如7 // 3的結(jié)果是2,而(-7) // 3的結(jié)果卻是-3。這個(gè)算法與其它很多編程語(yǔ)言不一樣,需要注意,它們的整除運(yùn)算會(huì)向0的方向取值。

      Python允許像數(shù)學(xué)的常用寫(xiě)法那樣連著寫(xiě)兩個(gè)比較運(yùn)行符。比如a < b < ca < b and b < c等價(jià)。C++的結(jié)果與Python不一樣,首先它會(huì)先計(jì)算a < b,根據(jù)兩者的大小獲得0或者1兩個(gè)值之一,然后再與c進(jìn)行比較。

      標(biāo)準(zhǔn)庫(kù)[編輯]

      Python擁有一個(gè)強(qiáng)大的標(biāo)準(zhǔn)庫(kù)[9]。Python語(yǔ)言的核心只包含數(shù)字、字符串、列表、字典、文件等常見(jiàn)類(lèi)型和函數(shù),而由Python標(biāo)準(zhǔn)庫(kù)提供了系統(tǒng)管理、網(wǎng)絡(luò)通信、文本處理、數(shù)據(jù)庫(kù)接口、圖形系統(tǒng)、XML處理等額外的功能。Python標(biāo)準(zhǔn)庫(kù)命名接口清晰、文檔良好,很容易學(xué)習(xí)和使用。

      Python標(biāo)準(zhǔn)庫(kù)的主要功能有:

      • 文本處理,包含文本格式化、正則表達(dá)式匹配、文本差異計(jì)算與合并、Unicode支持,二進(jìn)制數(shù)據(jù)處理等功能
      • 文件處理,包含文件操作、創(chuàng)建臨時(shí)文件、文件壓縮與歸檔、操作配置文件等功能
      • 操作系統(tǒng)功能,包含線程與進(jìn)程支持、IO復(fù)用、日期與時(shí)間處理、調(diào)用系統(tǒng)函數(shù)、寫(xiě)日記(logging)等功能
      • 網(wǎng)絡(luò)通信,包含網(wǎng)絡(luò)套接字,SSL加密通信、異步網(wǎng)絡(luò)通信等功能
      • 網(wǎng)絡(luò)協(xié)議,支持HTTP,F(xiàn)TP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網(wǎng)絡(luò)協(xié)議,并提供了編寫(xiě)網(wǎng)絡(luò)服務(wù)器的框架
      • W3C格式支持,包含HTML,SGML,XML的處理。
      • 其它功能,包括國(guó)際化支持、數(shù)學(xué)運(yùn)算、HASH、Tkinter等

      Python社區(qū)提供了大量的第三方模塊,使用方式與標(biāo)準(zhǔn)庫(kù)類(lèi)似。它們的功能無(wú)所不包,覆蓋科學(xué)計(jì)算、Web開(kāi)發(fā)、數(shù)據(jù)庫(kù)接口、圖形系統(tǒng)多個(gè)領(lǐng)域,并且大多成熟而穩(wěn)定。第三方模塊可以使用Python或者C語(yǔ)言編寫(xiě)。SWIG,SIP常用于將C語(yǔ)言編寫(xiě)的程序庫(kù)轉(zhuǎn)化為Python模塊。Boost C++ Libraries包含了一組庫(kù),Boost.Python,使得以Python或C++ 編寫(xiě)的程序能互相調(diào)用。借助于擁有基于標(biāo)準(zhǔn)庫(kù)的大量工具、能夠使用低級(jí)語(yǔ)言如C和可以作為其他庫(kù)接口的C++,Python已成為一種強(qiáng)大的應(yīng)用于其他語(yǔ)言與工具之間的“膠水”語(yǔ)言。

      著名第三方庫(kù)[編輯]

      Web框架[編輯]

      Django
      開(kāi)源web開(kāi)發(fā)框架,它鼓勵(lì)快速開(kāi)發(fā),并遵循MVC設(shè)計(jì),開(kāi)發(fā)周期短。
      ActiveGrid
      企業(yè)級(jí)的Web2.0解決方案。
      Karrigell
      簡(jiǎn)單的Web框架,自身包含了Web服務(wù),py腳本引擎和純python的數(shù)據(jù)庫(kù)PyDBLite。
      webpy
      一個(gè)小巧靈活的Web框架,雖然簡(jiǎn)單但是功能強(qiáng)大。
      CherryPy
      基于Python的Web應(yīng)用程序開(kāi)發(fā)框架。
      Pylons
      基于Python的一個(gè)極其高效和可靠的Web開(kāi)發(fā)框架。
      Zope
      開(kāi)源的Web應(yīng)用服務(wù)器。
      TurboGears
      基于Python的MVC風(fēng)格的Web應(yīng)用程序框架。
      Twisted
      流行的網(wǎng)絡(luò)編程庫(kù),大型Web框架。
      Quixote
      Web開(kāi)發(fā)框架。

      科學(xué)計(jì)算[編輯]

      Matplotlib
      用Python實(shí)現(xiàn)的類(lèi)matlab的第三方庫(kù),用以繪制一些高質(zhì)量的數(shù)學(xué)二維圖形。
      SciPy
      基于Python的matlab實(shí)現(xiàn),旨在實(shí)現(xiàn)matlab的所有功能。
      NumPy
      基于Python的科學(xué)計(jì)算第三方庫(kù),提供了矩陣,線性代數(shù),傅立葉變換等等的解決方案。

      GUI[編輯]

      PyGtk
      基于Python的GUI程序開(kāi)發(fā)GTK+庫(kù)。
      PyQt
      用于Python的QT開(kāi)發(fā)庫(kù)。

      WxPython

      Python下的GUI編程框架,與MFC的架構(gòu)相似。

      其它[編輯]

      BeautifulSoup
      基于Python的HTML/XML解析器,簡(jiǎn)單易用。
      PIL
      基于Python的圖像處理庫(kù),功能強(qiáng)大,對(duì)圖形文件的格式支持廣泛。
      PyGame
      基于Python的多媒體開(kāi)發(fā)和游戲軟件開(kāi)發(fā)模塊。
      Py2exe
      將python腳本轉(zhuǎn)換為windows上可以獨(dú)立運(yùn)行的可執(zhí)行程序。

      Python 3.0[編輯]

      Python的3.0版本,常被稱(chēng)為Python 3000,或簡(jiǎn)稱(chēng)Py3k[10]。相對(duì)于Python的早期版本,這是一個(gè)較大的升級(jí)。為了不帶入過(guò)多的累贅,Python 3.0在設(shè)計(jì)的時(shí)候沒(méi)有考慮向下兼容。許多針對(duì)早期Python版本設(shè)計(jì)的程序都無(wú)法在Python 3.0上正常運(yùn)行。為了照顧現(xiàn)有程序,Python 2.6作為一個(gè)過(guò)渡版本,基本使用了Python 2.x的語(yǔ)法和庫(kù),同時(shí)考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語(yǔ)法與函數(shù)。基于早期Python版本而能正常運(yùn)行于Python 2.6并無(wú)警告的程序可以通過(guò)一個(gè)2 to 3的轉(zhuǎn)換工具無(wú)縫遷移到Python 3.0[11]

      新的Python程序建議使用Python 3.0版本的語(yǔ)法[12]。除非運(yùn)行環(huán)境無(wú)法安裝Python 3.0或者程序本身使用了不支持Python 3.0的第三方庫(kù)。目前不支持Python 3.0的第三方庫(kù)有Twisted, py2exe, PIL等。大多數(shù)第三方庫(kù)都正在努力地兼容Python 3.0版本。即使無(wú)法立即使用Python 3.0,也建議編寫(xiě)兼容Python 3.0版本的程序,然后使用Python 2.6, Python 2.7來(lái)運(yùn)行。

      Python 2.7被確定為最后一個(gè)Python 2.x版本,它除了支持Python 2.x語(yǔ)法外,還支持部分Python 3.1語(yǔ)法。

      主要變化[編輯]

      Python 3.0的變化主要在以下幾個(gè)方面[13]

      • print語(yǔ)句沒(méi)有了,取而代之的是print()函數(shù)。可以使用2to3工具來(lái)自動(dòng)轉(zhuǎn)換。Python 2.6與Python 2.7部分地支持這種形式的print語(yǔ)法。在Python 2.6與Python 2.7里面,以下三種形式是等價(jià)的:
      print "fish"
      print ("fish") #注意print后面有個(gè)空格
      print("fish") #print()不能帶有任何其它參數(shù)
      

      然而,Python 2.6實(shí)際已經(jīng)支持新的print()語(yǔ)法:

      from __future__ import print_function
      print("fish", "panda", sep=', ')
      
      • 新的str類(lèi)型表示一個(gè)Unicode字符串,相當(dāng)于Python 2.x版本的unicode類(lèi)型。而字節(jié)序列則用類(lèi)似b"abc"的語(yǔ)法表示,用bytes類(lèi)表示,相當(dāng)于Python 2.x的str類(lèi)型。現(xiàn)在兩種類(lèi)型不能再隱式地自動(dòng)轉(zhuǎn)換,因此在Python 3.x里面"fish"+b"panda"是錯(cuò)誤。正確的寫(xiě)法是"fish"+b"panda".decode("utf-8")。Python 2.6可以自動(dòng)地將字節(jié)序列識(shí)別為Unicode字符串,方法是:
      from __future__ import unicode_literals
      print(repr("fish"))
      
      • 除法運(yùn)算符/在Python 3.x內(nèi)總是返回浮點(diǎn)數(shù)。而在Python 2.6內(nèi)會(huì)判斷被除數(shù)與除數(shù)是否是整數(shù)。如果是整數(shù)會(huì)返回整數(shù)值,相當(dāng)于整除;浮點(diǎn)數(shù)則返回浮點(diǎn)數(shù)值。為了讓Python 2.6統(tǒng)一返回浮點(diǎn)數(shù)值,可以:
      from __future__ import division
      print(3/2)
      
      • 捕獲異常的語(yǔ)法由except exc, var改為except exc as var。使用語(yǔ)法except (exc1, exc2) as var可以同時(shí)捕獲多種類(lèi)型的異常。Python 2.6已經(jīng)支持這兩種語(yǔ)法。
      • 集合(set)的新寫(xiě)法:{1,2,3,4}。注意{}仍然表示空的字典(dict)。
      • 字典推導(dǎo)式(Dictionary comprehensions){expr1: expr2 for k, v in d},這個(gè)語(yǔ)法等價(jià)于:
      result={}
      for k, v in d.items():
          result[expr1]=expr2
      return result
      
      • 集合推導(dǎo)式(Set Comprehensions){expr1 for x in stuff}。這個(gè)語(yǔ)法等價(jià)于:
      result = set()
      for x in stuff:
          result.add(expr1)
      return result
      
      • 八進(jìn)制數(shù)必須寫(xiě)成0o777,原來(lái)的形式0777不能用了;二進(jìn)制必須寫(xiě)成0b111。新增了一個(gè)bin()函數(shù)用于將一個(gè)整數(shù)轉(zhuǎn)換成二進(jìn)制字符串。Python 2.6已經(jīng)支持這兩種語(yǔ)法。
      • dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip()不再返回列表,而是迭代器。
      • 如果兩個(gè)對(duì)象之間沒(méi)有定義明確的有意義的順序。使用<, >, <=, >=比較它們會(huì)拋出異常。比如1 < ""在Python 2.6里面會(huì)返回True,而在Python 3.0里面會(huì)拋出異常。現(xiàn)在cmp(), instance.__cmp__()函數(shù)已經(jīng)被刪除。
      • 可以注釋函數(shù)的參數(shù)與返回值。此特性可方便IDE對(duì)源代碼進(jìn)行更深入的分析。例如給參數(shù)增加類(lèi)型信息:
      def sendMail(from_: str, to: str, title: str, body: str) -> bool:
          pass
      
      • 合并intlong類(lèi)型。
      • 多個(gè)模塊被改名(根據(jù)PEP8):
      舊的名字新的名字
      _winreg winreg
      ConfigParser configparser
      copy_reg copyreg
      Queue queue
      SocketServer socketserver
      repr reprlib
      1. StringIO模塊現(xiàn)在被合并到新的io模塊內(nèi)。new, md5, gopherlib等模塊被刪除。Python 2.6已經(jīng)支持新的io模塊。
      2. httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包內(nèi)。
      3. 取消了exec語(yǔ)句,只剩下exec()函數(shù)。Python 2.6已經(jīng)支持exec()函數(shù)。
      • 其他變化詳見(jiàn)參考文獻(xiàn)[13]。基本上,可以編寫(xiě)出使用Python 3.0語(yǔ)法并運(yùn)行于Python 2.6, Python 2.7的程序。

      實(shí)現(xiàn)[編輯]

      Python是一門(mén)跨平臺(tái)的腳本語(yǔ)言,Python規(guī)定了一個(gè)Python語(yǔ)法規(guī)則,根據(jù)該規(guī)則可編寫(xiě)Python解釋器

      • CPython[14],官方的解釋器。需要區(qū)別于其他解釋器的時(shí)候才以CPython稱(chēng)呼。這是最常用的Python版本。
      • Jython(原名JPythonJava語(yǔ)言實(shí)現(xiàn)的Python,現(xiàn)已正式發(fā)布)。Jython可以直接調(diào)用Java的各種函數(shù)庫(kù)。
      • PyPy(使用Python語(yǔ)言寫(xiě)的Python)
      • IronPython(面向.NETECMA CLI的Python實(shí)現(xiàn))。IronPython能夠直接調(diào)用.net平臺(tái)的各種函數(shù)庫(kù)。可以將Python程序編譯成.net程序。
      • ZhPy(周蟒,支持使用繁/簡(jiǎn)中文語(yǔ)句編寫(xiě)程序的Python語(yǔ)言)

      開(kāi)發(fā)環(huán)境[編輯]

      通用IDE / 文本編輯器[編輯]

      很多并非集成開(kāi)發(fā)環(huán)境軟件的文本編輯器,也對(duì)Python有不同程度的支持,并且加上專(zhuān)門(mén)為Python設(shè)計(jì)的編輯器插件也會(huì)有很高的可用性。

      專(zhuān)門(mén)為Python設(shè)計(jì)的IDE軟件[編輯]

      適用于Python的集成開(kāi)發(fā)環(huán)境(IDE)軟件,除了標(biāo)準(zhǔn)二進(jìn)制發(fā)布包所附的IDLE之外,還有許多其他選擇。其中有些軟件設(shè)計(jì)有語(yǔ)法著色、語(yǔ)法檢查、運(yùn)行調(diào)試、自動(dòng)補(bǔ)全、智能感知等便利功能。由于Python的跨平臺(tái)出身,這些軟件往往也具備各種操作系統(tǒng)的版本或一定的移植性。

      • Eric:基于PyQt的自由軟件,功能強(qiáng)大。支持自動(dòng)補(bǔ)全、智能感知、自動(dòng)語(yǔ)法檢查、工程管理、svn/cvs集成、自動(dòng)單元測(cè)試等功能。調(diào)試功能與Visual Studio和Eclipse類(lèi)似。目前同時(shí)有兩個(gè)版本。Eric4支持Python2.x,Eric5支持Python3.x。使用前需要先安裝相應(yīng)的PyQt版本。
      • IDLE:Python“標(biāo)準(zhǔn)”IDE。一般隨Python而安裝,支持較少的編輯功能。調(diào)試功能也比較弱。
      • KomodoKomodo Edit:后者是前者的免費(fèi)精簡(jiǎn)版。也可以用于PHP,Ruby,Javascript,Perl,Web和云開(kāi)發(fā)。
      • PyCharm:由JetBrains打造,該公司的Java IDE軟件IntelliJ擁有海量的用戶(hù);PyCharm具備一般IDE的功能,比如,調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制等等,同時(shí)另外,PyCharm還提供了一些很好的功能用于Django開(kāi)發(fā),同時(shí)支持Google App Engine,更酷的是,PyCharm支持IronPython。PyCharm是商業(yè)軟件,目前已經(jīng)到3.1版本。
      • PythonWin:包含在pywin32內(nèi)的編輯器,僅適用于Windows。
      • SPE(Stani's Python Editor):功能較多的免費(fèi)軟件,依賴(lài)wxPython
      • Ulipad:功能較全的免費(fèi)軟件,依賴(lài)wxPython
      • WingIDE:可能是功能最全的IDE,但不是免費(fèi)軟件。
      • PyScripter:功能較全的開(kāi)源IDE,使用Delphi開(kāi)發(fā)。

      使用Python編寫(xiě)的著名應(yīng)用[編輯]

      • Reddit - 社交分享網(wǎng)站
      • Dropbox - 文件分享服務(wù)
      • 豆瓣網(wǎng) - 圖書(shū)、唱片、電影等文化產(chǎn)品的資料數(shù)據(jù)庫(kù)網(wǎng)站
      • Django - 鼓勵(lì)快速開(kāi)發(fā)的Web應(yīng)用框架
      • Pylons - Web應(yīng)用框架
      • Zope - 應(yīng)用服務(wù)器
      • Plone - 內(nèi)容管理系統(tǒng)
      • TurboGears - 另一個(gè)Web應(yīng)用快速開(kāi)發(fā)框架
      • Twisted - Python的網(wǎng)絡(luò)應(yīng)用程序框架
      • Fabric - 用于管理成百上千臺(tái)Linux主機(jī)的程序庫(kù)
      • Python Wikipedia Robot Framework - MediaWiki的機(jī)器人程序
      • MoinMoinWiki - Python寫(xiě)成的Wiki程序
      • Trac - 使用Python編寫(xiě)的BUG管理系統(tǒng)
      • Mailman - 使用Python編寫(xiě)的郵件列表軟件
      • Mezzanine - 基于Django編寫(xiě)的內(nèi)容管理系統(tǒng)系統(tǒng)
      • flask - Python微Web框架
      • Webpy - Python微Web框架
      • Bottle - Python微Web框架
      • EVE - 網(wǎng)絡(luò)游戲EVE大量使用Python進(jìn)行開(kāi)發(fā)
      • Blender - 使用Python作為建模工具與GUI語(yǔ)言的開(kāi)源3D繪圖軟件
      • Inkscape - 一個(gè)開(kāi)源的SVG矢量圖形編輯器。

      影響[編輯]

      • ECMAScript從Python參考了iterators,generators,以及l(fā)ist comprehensions。
      • OCaml有個(gè)optional syntax,稱(chēng)為twt(The Whitespace Thing),取材自Python與Haskell

      參考文獻(xiàn)[編輯]

      1. ^ Python 3.4.1. Python Software Foundation. [18 May 2014].
      2. ^ Python 2.7.8 Release. Python Software Foundation. [1 July 2014].
      3. ^ Python 3.3.5 Release Candidate 1. Python Software Foundation. [24 February 2014].
      4. ^ Python 3.4.0 Release Candidate 2. Python Software Foundation. [24 February 2014].
      5. ^ Guido van Rossum. Foreword for "Programming Python" (1st ed.). 1996/5/1 (英文).
      6. ^ Python Language Guide (v1.0). Google Documents List Data API v1.0. Google. (原始內(nèi)容存檔于10 August 2010).
      7. ^ Heavy usage of Python at Google
      8. ^ call by value (where the value is always an object reference, not the value of the object)或者稱(chēng)作call by object reference
      9. ^ Przemyslaw Piotrowski, Build a Rapid Web Development Environment for Python Server Pages and Oracle, Oracle Technology Network, July 2006. Accessed October 21, 2008.
      10. ^ Python Software Foundation. Python 3.0b3 Release. 2008/8/20 [2008/8/30] (英文).
      11. ^ Python Software Foundation. Conversion tool for Python 2.x code: 2to3[2008/8/30] (英文).
      12. ^ Python Software Foundation. Should I use Python 2 or Python 3 for my development activity?. 2010/9/14 (英文).
      13. 13.0 13.1 Guido van Rossum. What’s New in Python 3.0. Python Software Foundation. 2009/2/14 [2011/2/22] (英文).
      14. ^ http://www.Python.org CPython
      15. ^ http://editra.org
      posted @ 2014-10-17 09:27  狂師  閱讀(613)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日本午夜精品一区二区三区电影| 亚洲色偷偷色噜噜狠狠99 | 中文字幕日本一区二区在线观看| 久久精品熟女亚洲av麻| 国产成人免费一区二区三区| 美女无遮挡免费视频网站| 色噜噜狠狠一区二区三区果冻| 中文字幕日韩精品国产| 欧美牲交a免费| 国产麻豆放荡av激情演绎| 又爽又黄又无遮掩的免费视频| 亚洲av永久无码精品网站| 精品国产女同疯狂摩擦2| 久久不见久久见www日本| 国产超高清麻豆精品传媒麻豆精品| 国产一区二区三区乱码在线观看 | 亚洲精品人成网线在线播放va| 在线精品亚洲区一区二区| 国产欧美日韩高清在线不卡| 亚洲区日韩精品中文字幕| 亚洲日本韩国欧美云霸高清| 艳妇乳肉豪妇荡乳在线观看| 自拍偷自拍亚洲一区二区| 亚洲成a人片在线观看日本| 一区二区三区岛国av毛片| 国产萌白酱喷水视频在线观看| 中文字幕国产精品综合| 国产一区二区不卡在线视频| aaa少妇高潮大片免费看| 亚洲av无码国产在丝袜线观看| 啊┅┅快┅┅用力啊岳网站| 国产精品久久久福利| 精品日韩人妻中文字幕| 成人午夜激情在线观看| 精品久久久久久中文字幕202| 亚洲欧美综合精品成| 免费人妻av无码专区| 亚洲成av人片乱码色午夜| 亚洲自拍偷拍激情视频| 18禁成人免费无码网站| 国产中文字幕精品免费|