上一篇文章為:→2.8附錄-vim分屏操作
1. Python發(fā)展歷史
-
起源
Python的作者,Guido von Rossum,荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計(jì)算機(jī)帶來(lái)的樂(lè)趣。用他的話(huà)說(shuō),盡管擁有數(shù)學(xué)和計(jì)算機(jī)雙料資質(zhì),他總趨向于做計(jì)算機(jī)相關(guān)的工作,并熱衷于做任何和編程相關(guān)的活兒。
在那個(gè)時(shí)候,Guido接觸并使用過(guò)諸如Pascal、C、Fortran等語(yǔ)言。這些語(yǔ)言的基本設(shè)計(jì)原則是讓機(jī)器能更快運(yùn)行。在80年代,雖然IBM和蘋(píng)果已經(jīng)掀起了個(gè)人電腦浪潮,但這些個(gè)人電腦的配置很低。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個(gè)大的數(shù)組就能占滿(mǎn)內(nèi)存。所有的編譯器的核心是做優(yōu)化,以便讓程序能夠運(yùn)行。為了增進(jìn)效率,語(yǔ)言也迫使程序員像計(jì)算機(jī)一樣思考,以便能寫(xiě)出更符合機(jī)器口味的程序。在那個(gè)時(shí)代,程序員恨不得用手榨取計(jì)算機(jī)每一寸的能力。有人甚至認(rèn)為C語(yǔ)言的指針是在浪費(fèi)內(nèi)存。至于動(dòng)態(tài)類(lèi)型,內(nèi)存自動(dòng)管理,面向?qū)ο蟆?別想了,那會(huì)讓你的電腦陷入癱瘓。
這種編程方式讓Guido感到苦惱。Guido知道如何用C語(yǔ)言寫(xiě)出一個(gè)功能,但整個(gè)編寫(xiě)過(guò)程需要耗費(fèi)大量的時(shí)間,即使他已經(jīng)準(zhǔn)確的知道了如何實(shí)現(xiàn)。他的另一個(gè)選擇是shell。Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)長(zhǎng)期存在。UNIX的管理員們常常用shell去寫(xiě)一些簡(jiǎn)單的腳本,以進(jìn)行一些系統(tǒng)維護(hù)的工作,比如定期備份、文件系統(tǒng)管理等等。shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語(yǔ)言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質(zhì)是調(diào)用命令。它并不是一個(gè)真正的語(yǔ)言。比如說(shuō),shell沒(méi)有數(shù)值型的數(shù)據(jù)類(lèi)型,加法運(yùn)算都很復(fù)雜。總之,shell不能全面的調(diào)動(dòng)計(jì)算機(jī)的功能。
Guido希望有一種語(yǔ)言,這種語(yǔ)言能夠像C語(yǔ)言那樣,能夠全面調(diào)用計(jì)算機(jī)的功能接口,又可以像shell那樣,可以輕松的編程。ABC語(yǔ)言讓Guido看到希望。ABC是由荷蘭的數(shù)學(xué)和計(jì)算機(jī)研究所開(kāi)發(fā)的。Guido在該研究所工作,并參與到ABC語(yǔ)言的開(kāi)發(fā)。ABC語(yǔ)言以教學(xué)為目的。與當(dāng)時(shí)的大部分語(yǔ)言不同,ABC語(yǔ)言的目標(biāo)是“讓用戶(hù)感覺(jué)更好”。ABC語(yǔ)言希望讓語(yǔ)言變得容易閱讀,容易使用,容易記憶,容易學(xué)習(xí),并以此來(lái)激發(fā)人們學(xué)習(xí)編程的興趣。比如下面是一段來(lái)自Wikipedia的ABC程序,這個(gè)程序用于統(tǒng)計(jì)文本中出現(xiàn)的詞的總數(shù):
HOW TO RETURN words document: PUT {} IN collection FOR line IN document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection
HOW TO用于定義一個(gè)函數(shù)。一個(gè)Python程序員應(yīng)該很容易理解這段程序。ABC語(yǔ)言使用冒號(hào)和縮進(jìn)來(lái)表示程序塊。行 尾沒(méi)有分號(hào)。for和if結(jié)構(gòu)中也沒(méi)有括號(hào)() 。賦值采用的是PUT,而不是更常見(jiàn)的等號(hào)。這些改動(dòng)讓ABC程序讀起來(lái)像一段文字。 盡管已經(jīng)具備了良好的可讀性和易用性,ABC語(yǔ)言最終沒(méi)有流行起來(lái)。在當(dāng)時(shí),ABC語(yǔ)言編譯器需要比較高配置的電腦才能運(yùn)行。而這些電腦的使用者通常精通計(jì)算機(jī),他們更多考慮程序的效率,而非它的學(xué)習(xí)難度。除了硬件上的困難外,ABC語(yǔ)言的設(shè)計(jì)也存在一些致命的問(wèn)題: 可拓展性差。ABC語(yǔ)言不是模塊化語(yǔ)言。如果想在ABC語(yǔ)言中增加功能,比如對(duì)圖形化的支持,就必須改動(dòng)很多地方。 不能直接進(jìn)行IO。ABC語(yǔ)言不能直接操作文件系統(tǒng)。盡管你可以通過(guò)諸如文本流的方式導(dǎo)入數(shù)據(jù),但ABC無(wú)法直接讀寫(xiě)文 件。輸入輸出的困難對(duì)于計(jì)算機(jī)語(yǔ)言來(lái)說(shuō)是致命的。你能想像一個(gè)打不開(kāi)車(chē)門(mén)的跑車(chē)么? 過(guò)度革新。ABC用自然語(yǔ)言的方式來(lái)表達(dá)程序的意義,比如上面程序中的HOW TO 。然而對(duì)于程序員來(lái)說(shuō),他們更習(xí)慣 用function或者define來(lái)定義一個(gè)函數(shù)。同樣,程序員更習(xí)慣用等號(hào)來(lái)分配變量。盡管ABC語(yǔ)言很特別,但學(xué)習(xí)難度 也很大。 傳播困難。ABC編譯器很大,必須被保存在磁帶上。當(dāng)時(shí)Guido在訪問(wèn)的時(shí)候,就必須有一個(gè)大磁帶來(lái)給別人安裝ABC編 譯器。 這樣,ABC語(yǔ)言就很難快速傳播。 1989年,為了打發(fā)圣誕節(jié)假期,Guido開(kāi)始寫(xiě)Python語(yǔ)言的編譯器。Python這個(gè)名字,來(lái)自Guido所摯愛(ài)的電視劇Monty Python's Flying Circus。他希望這個(gè)新的叫做Python的語(yǔ)言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學(xué)易用,可拓展的語(yǔ)言。Guido作為一個(gè)語(yǔ)言設(shè)計(jì)愛(ài)好者,已經(jīng)有過(guò)設(shè)計(jì)語(yǔ)言的嘗試。這一次,也不過(guò)是一次純粹的hacking行為。
-
一門(mén)語(yǔ)言的誕生
1991年,第一個(gè)Python編譯器誕生。它是用C語(yǔ)言實(shí)現(xiàn)的,并能夠調(diào)用C語(yǔ)言的庫(kù)文件。從一出生,Python已經(jīng)具有了 :類(lèi),函數(shù),異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類(lèi)型,以及模塊為基礎(chǔ)的拓展系統(tǒng)。 Python語(yǔ)法很多來(lái)自C,但又受到ABC語(yǔ)言的強(qiáng)烈影響。來(lái)自ABC語(yǔ)言的一些規(guī)定直到今天還富有爭(zhēng)議,比如強(qiáng)制縮進(jìn)。 但這些語(yǔ)法規(guī)定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例,特別是C語(yǔ)言的慣例,比如回歸等號(hào)賦值。Guido認(rèn)為,如果“常識(shí)”上確立的東西,沒(méi)有必要過(guò)度糾結(jié)。 Python從一開(kāi)始就特別在意可拓展性。Python可以在多個(gè)層次上拓展。從高層上,你可以直接引入. py文件。在底層,你可以引用C語(yǔ)言的庫(kù)。Python程序員可以快速的使用Python寫(xiě). py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí),Python程序員可以深入底層,寫(xiě)C程序,編譯為.so文件引入到Python中使用。Python就好像是使用鋼構(gòu)建房一樣,先規(guī)定好大的框架。而程序員可以在此框架下相當(dāng)自由的拓展或更 改。 最初的Python完全由Guido本人開(kāi)發(fā)。Python得到Guido同事的歡迎。他們迅速的反饋使用意見(jiàn),并參與到Python的改進(jìn)。Guido和一些同事構(gòu)成Python的核心團(tuán)隊(duì)。他們將自己大部分的業(yè)余時(shí)間用于hack Python。隨后,Python拓 展到研究所之外。Python將許多機(jī)器層面上的細(xì)節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。Python程 序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)。這一特征吸引了廣大的程序員。Python開(kāi)始流行。
人生苦短,我用python
-
時(shí)勢(shì)造英雄
我們不得不暫停我們的Python時(shí)間,轉(zhuǎn)而看一看瞬息萬(wàn)變的計(jì)算機(jī)行業(yè)。1990年代初,個(gè)人計(jì)算機(jī)開(kāi)始進(jìn)入普通家庭。Intel發(fā)布了486處理器,windows發(fā)布window 3.0開(kāi)始的一系列視窗系統(tǒng)。計(jì)算機(jī)的性能大大提高。程序員開(kāi)始關(guān)注計(jì)算機(jī)的易用性,比如圖形化界面。
day03_python基礎(chǔ)-02.jpg
Windows 3.0
由于計(jì)算機(jī)性能的提高,軟件的世界也開(kāi)始隨之改變。硬件足以滿(mǎn)足許多個(gè)人電腦的需要。硬件廠商甚至渴望高需求軟 件的出現(xiàn),以帶動(dòng)硬件的更新?lián)Q代。C++和Java相繼流行。C++和Java提供了面向?qū)ο蟮木幊谭妒剑约柏S富的對(duì)象庫(kù)。在犧牲了一定的性能的代價(jià)下,C++和Java大大提高了程序的產(chǎn)量。語(yǔ)言的易用性被提到一個(gè)新的高度。我們還記得 ,ABC失敗的一個(gè)重要原因是硬件的性能限制。從這方面說(shuō),Python要比ABC幸運(yùn)許多。 另一個(gè)悄然發(fā)生的改變是Internet。1990年代還是個(gè)人電腦的時(shí)代,windows和Intel挾PC以令天下,盛極一時(shí)。盡管Internet為主體的信息革命尚未到來(lái),但許多程序員以及資深計(jì)算機(jī)用戶(hù)已經(jīng)在頻繁使用Internet進(jìn)行交流,比如 使用email和newsgroup。Internet讓信息交流成本大大下降。一種新的軟件開(kāi)發(fā)模式開(kāi)始流行:開(kāi)源。程序員利用 業(yè)余時(shí)間進(jìn)行軟件開(kāi)發(fā),并開(kāi)放源代碼。1991年,Linus在comp.os.minix新聞組上發(fā)布了Linux內(nèi)核源代碼,吸引大批hacker的加入。Linux和GNU相互合作,最終構(gòu)成了一個(gè)充滿(mǎn)活力的開(kāi)源平臺(tái)。 硬件性能不是瓶頸,Python又容易使用,所以許多人開(kāi)始轉(zhuǎn)向Python。Guido維護(hù)了一個(gè)maillist,Python用戶(hù)就通過(guò)郵件進(jìn)行交流。Python用戶(hù)來(lái)自許多領(lǐng)域,有不同的背景,對(duì)Python也有不同的需求。Python相當(dāng)?shù)拈_(kāi)放,又容 易拓展,所以當(dāng)用戶(hù)不滿(mǎn)足于現(xiàn)有功能,很容易對(duì)Python進(jìn)行拓展或改造。隨后,這些用戶(hù)將改動(dòng)發(fā)給Guido,并由Gu ido決定是否將新的特征加入到Python或者標(biāo)準(zhǔn)庫(kù)中。如果代碼能被納入Python自身或者標(biāo)準(zhǔn)庫(kù),這將極大的榮譽(yù)。由于Guido至高無(wú)上的決定權(quán),他因此被稱(chēng)為“終身的仁慈獨(dú)裁者”。 Python被稱(chēng)為“Battery Included”,是說(shuō)它以及其標(biāo)準(zhǔn)庫(kù)的功能強(qiáng)大。這些是整個(gè)社區(qū)的貢獻(xiàn)。Python的開(kāi)發(fā)者來(lái)自不同領(lǐng)域,他們將不同領(lǐng)域的優(yōu)點(diǎn)帶給Python。比如Python標(biāo)準(zhǔn)庫(kù)中的正則表達(dá)是參考Perl,而lambda, map, filter, reduce等函數(shù)參考了Lisp。Python本身的一些功能以及大部分的標(biāo)準(zhǔn)庫(kù)來(lái)自于社區(qū)。Python的社 區(qū)不斷擴(kuò)大,進(jìn)而擁有了自己的newsgroup,網(wǎng)站,以及基金。從Python 2.0開(kāi)始,Python也從maillist的開(kāi)發(fā)方式,轉(zhuǎn)為完全開(kāi)源的開(kāi)發(fā)方式。社區(qū)氣氛已經(jīng)形成,工作被整個(gè)社區(qū)分擔(dān),Python也獲得了更加高速的發(fā)展。 到今天,Python的框架已經(jīng)確立。Python語(yǔ)言以對(duì)象為核心組織代碼,支持多種編程范式,采用動(dòng)態(tài)類(lèi)型,自動(dòng)進(jìn)行內(nèi)存回收。Python支持解釋運(yùn)行,并能調(diào)用C庫(kù)進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫(kù)。由于標(biāo)準(zhǔn)庫(kù)的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開(kāi)始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級(jí)成了物種豐富的熱帶雨林。
-
啟示錄
Python崇尚優(yōu)美、清晰、簡(jiǎn)單,是一個(gè)優(yōu)秀并廣泛使用的語(yǔ)言。Python在TIOBE排行榜中排行第八,它是Google的第三大開(kāi)發(fā)語(yǔ)言,Dropbox的基礎(chǔ)語(yǔ)言,豆瓣的服務(wù)器語(yǔ)言。Python的發(fā)展史可以作為一個(gè)代表,帶給我許多啟示。 在Python的開(kāi)發(fā)過(guò)程中,社區(qū)起到了重要的作用。Guido自認(rèn)為自己不是全能型的程序員,所以他只負(fù)責(zé)制訂框架。如果問(wèn)題太復(fù)雜,他會(huì)選擇繞過(guò)去,也就是cut the corner。這些問(wèn)題最終由社區(qū)中的其他人解決。社區(qū)中的人才是異常豐富的,就連創(chuàng)建網(wǎng)站,籌集基金這樣與開(kāi)發(fā)稍遠(yuǎn)的事情,也有人樂(lè)意于處理。如今的項(xiàng)目開(kāi)發(fā)越來(lái)越復(fù)雜,越來(lái)越龐大,合作以及開(kāi)放的心態(tài)成為項(xiàng)目最終成功的關(guān)鍵。 Python從其他語(yǔ)言中學(xué)到了很多,無(wú)論是已經(jīng)進(jìn)入歷史的ABC,還是依然在使用的C和Perl,以及許多沒(méi)有列出的其他 語(yǔ)言。可以說(shuō),Python的成功代表了它所有借鑒的語(yǔ)言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個(gè)語(yǔ)言都是混合體,都有它優(yōu)秀的地方,但也有各種各樣的缺陷。同時(shí),一個(gè)語(yǔ)言“好與不好”的評(píng) 判,往往受制于平臺(tái)、硬件、時(shí)代等等外部原因。程序員經(jīng)歷過(guò)許多語(yǔ)言之爭(zhēng)。其實(shí),以開(kāi)放的心態(tài)來(lái)接受各個(gè)語(yǔ)言,說(shuō)不定哪一天,程序員也可以如Guido那樣,混合出自己的語(yǔ)言。
關(guān)鍵點(diǎn)常識(shí)
- Python的發(fā)音與拼寫(xiě)
- Python的意思是蟒蛇,源于作者喜歡的一部電視劇 (C呢?)
- Python的作者是Guido van Rossum(龜叔)
- Python是龜叔在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而用C編寫(xiě)的一個(gè)編程語(yǔ)言
- Python正式誕生于1991年
- Python的解釋器如今有多個(gè)語(yǔ)言實(shí)現(xiàn),我們常用的是CPython(官方版本的C語(yǔ)言實(shí)現(xiàn)),其他還有Jython(可以運(yùn)行在Java平臺(tái))、IronPython(可以運(yùn)行在.NET和Mono平臺(tái))、PyPy(Python實(shí)現(xiàn)的,支持JIT即時(shí)編譯)
- Python目前有兩個(gè)版本,Python2和Python3,最新版分別為2.7.12和3.5.2,現(xiàn)階段大部分公司用的是Python2
- Life is shot, you need Python. 人生苦短,我用Python。
-
2017年1月份 編程語(yǔ)言流行排行榜
day03_python基礎(chǔ)-03.png
2. Python優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
簡(jiǎn)單————Python是一種代表簡(jiǎn)單主義思想的語(yǔ)言。閱讀一個(gè)良好的Python程序就感覺(jué)像是在讀英語(yǔ)一樣,盡管這個(gè)英語(yǔ)的要求非常嚴(yán)格!Python的這種偽代碼本質(zhì)是它最大的優(yōu)點(diǎn)之一。它使你能夠?qū)W⒂诮鉀Q問(wèn)題而不是去搞明白語(yǔ)言本身。
易學(xué)————就如同你即將看到的一樣,Python極其容易上手。前面已經(jīng)提到了,Python有極其簡(jiǎn)單的語(yǔ)法。
免費(fèi)、開(kāi)源————Python是FLOSS(自由/開(kāi)放源碼軟件)之一。簡(jiǎn)單地說(shuō),你可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念。這是為什么Python如此優(yōu)秀的原因之一——它是由一群希望看到一個(gè)更加優(yōu)秀的Python的人創(chuàng)造并經(jīng)常改進(jìn)著的。
高層語(yǔ)言————當(dāng)你用Python語(yǔ)言編寫(xiě)程序的時(shí)候,你無(wú)需考慮諸如如何管理你的程序使用的內(nèi)存一類(lèi)的底層細(xì)節(jié)。
可移植性————由于它的開(kāi)源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過(guò)改動(dòng)使它能夠工作在不同平臺(tái)上)。如果你小心地避免使用依賴(lài)于系統(tǒng)的特性,那么你的所有Python程序無(wú)需修改就可以在下述任何平臺(tái)上面運(yùn)行。這些平臺(tái)包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基于linux開(kāi)發(fā)的Android平臺(tái)!
解釋性————這一點(diǎn)需要一些解釋。一個(gè)用編譯性語(yǔ)言比如C或C++寫(xiě)的程序可以從源文件(即C或C++語(yǔ)言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語(yǔ)言(二進(jìn)制代碼,即0和1)。這個(gè)過(guò)程通過(guò)編譯器和不同的標(biāo)記、選項(xiàng)完成。當(dāng)你運(yùn)行你的程序的時(shí)候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤(pán)復(fù)制到內(nèi)存中并且運(yùn)行。而Python語(yǔ)言寫(xiě)的程序不需要編譯成二進(jìn)制代碼。你可以直接從源代碼運(yùn)行程序。在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱(chēng)為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語(yǔ)言并運(yùn)行。事實(shí)上,由于你不再需要擔(dān)心如何編譯程序,如何確保連接轉(zhuǎn)載正確的庫(kù)等等,所有這一切使得使用Python更加簡(jiǎn)單。由于你只需要把你的Python程序拷貝到另外一臺(tái)計(jì)算機(jī)上,它就可以工作了,這也使得你的Python程序更加易于移植。
面向?qū)ο蟆狿ython既支持面向過(guò)程的編程也支持面向?qū)ο蟮木幊獭T凇懊嫦蜻^(guò)程”的語(yǔ)言中,程序是由過(guò)程或僅僅是可重用代碼的函數(shù)構(gòu)建起來(lái)的。在“面向?qū)ο蟆钡恼Z(yǔ)言中,程序是由數(shù)據(jù)和功能組合而成的對(duì)象構(gòu)建起來(lái)的。與其他主要的語(yǔ)言如C++和Java相比,Python以一種非常強(qiáng)大又簡(jiǎn)單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?/p>
可擴(kuò)展性————如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開(kāi),你可以把你的部分程序用C或C++編寫(xiě),然后在你的Python程序中使用它們。
豐富的庫(kù)————Python標(biāo)準(zhǔn)庫(kù)確實(shí)很龐大。它可以幫助你處理各種工作,包括正則表達(dá)式、文檔生成、單元測(cè)試、線程、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶(hù)界面)、Tk和其他與系統(tǒng)有關(guān)的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱(chēng)作Python的“功能齊全”理念。除了標(biāo)準(zhǔn)庫(kù)以外,還有許多其他高質(zhì)量的庫(kù),如wxPython、Twisted和Python圖像庫(kù)等等。
規(guī)范的代碼————Python采用強(qiáng)制縮進(jìn)的方式使得代碼具有極佳的可讀性。
缺點(diǎn)
- 運(yùn)行速度,有速度要求的話(huà),用C++改寫(xiě)關(guān)鍵部分吧。
- 國(guó)內(nèi)市場(chǎng)較小(國(guó)內(nèi)以python來(lái)做主要開(kāi)發(fā)的,目前只有一些web2.0公司)。但時(shí)間推移,目前很多國(guó)內(nèi)軟件公司,尤其是游戲公司,也開(kāi)始規(guī)模使用他。
- 中文資料匱乏(好的python中文資料屈指可數(shù))。托社區(qū)的福,有幾本優(yōu)秀的教材已經(jīng)被翻譯了,但入門(mén)級(jí)教材多,高級(jí)內(nèi)容還是只能看英語(yǔ)版。
- 構(gòu)架選擇太多(沒(méi)有像C#這樣的官方.net構(gòu)架,也沒(méi)有像ruby由于歷史較短,構(gòu)架開(kāi)發(fā)的相對(duì)集中。Ruby on Rails 構(gòu)架開(kāi)發(fā)中小型web程序天下無(wú)敵)。不過(guò)這也從另一個(gè)側(cè)面說(shuō)明,python比較優(yōu)秀,吸引的人才多,項(xiàng)目也多。
3. Python應(yīng)用場(chǎng)景
-
Web應(yīng)用開(kāi)發(fā)
Python經(jīng)常被用于Web開(kāi)發(fā)。比如,通過(guò)mod_wsgi模塊,Apache可以運(yùn)行用Python編寫(xiě)的Web程序。Python定義了WSGI標(biāo)準(zhǔn)應(yīng)用接口來(lái)協(xié)調(diào)Http服務(wù)器與基于Python的Web程序之間的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程序員輕松地開(kāi)發(fā)和管理復(fù)雜的Web程序。
-
操作系統(tǒng)管理、服務(wù)器運(yùn)維的自動(dòng)化腳本
在很多操作系統(tǒng)里,Python是標(biāo)準(zhǔn)的系統(tǒng)組件。 大多數(shù)Linux發(fā)行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端下直接運(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)用操作系統(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腳本。
-
科學(xué)計(jì)算
NumPy,SciPy,Matplotlib可以讓Python程序員編寫(xiě)科學(xué)計(jì)算程序。
-
桌面軟件
PyQt、PySide、wxPython、PyGTK是Python快速開(kāi)發(fā)桌面應(yīng)用程序的利器。
-
服務(wù)器軟件(網(wǎng)絡(luò)軟件)
Python對(duì)于各種網(wǎng)絡(luò)協(xié)議的支持很完善,因此經(jīng)常被用于編寫(xiě)服務(wù)器軟件、網(wǎng)絡(luò)爬蟲(chóng)。第三方庫(kù)Twisted支持異步網(wǎng)絡(luò)編程和多數(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議(包含客戶(hù)端和服務(wù)器),并且提供了多種工具,被廣泛用于編寫(xiě)高性能的服務(wù)器軟件。
-
游戲
很多游戲使用C++編寫(xiě)圖形顯示等高性能模塊,而使用Python或者Lua編寫(xiě)游戲的邏輯、服務(wù)器。相較于Python,Lua的功能更簡(jiǎn)單、體積更小;而Python則支持更多的特性和數(shù)據(jù)類(lèi)型。
-
構(gòu)思實(shí)現(xiàn),產(chǎn)品早期原型和迭代
YouTube、Google、Yahoo!、NASA都在內(nèi)部大量地使用Python