Python(發(fā)音:[ 'paiθ(?)n; (US) 'paiθ?n ]),是一種面向?qū)ο蟮慕忉屝缘挠?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,也是一種功能強(qiáng)大而完善的通用型語(yǔ)言,已經(jīng)具有十多年的發(fā)展歷史,成熟且穩(wěn)定。Python 具有腳本語(yǔ)言中最豐富和強(qiáng)大的類庫(kù),足以支持絕大多數(shù)日常應(yīng)用。
這種語(yǔ)言具有非常簡(jiǎn)捷而清晰的語(yǔ)法特點(diǎn),適合完成各種高層任務(wù),幾乎可以在所有的
操作系統(tǒng)中運(yùn)行。
目前,基于這種語(yǔ)言的相關(guān)技術(shù)正在飛速的發(fā)展,用戶數(shù)量急劇擴(kuò)大,相關(guān)的資源非常多。
Python的Hello World程序下面是一個(gè)在標(biāo)準(zhǔn)輸出設(shè)備上輸出Hello World的簡(jiǎn)單程序,這種程序通常作為開始學(xué)習(xí)編程語(yǔ)言時(shí)的第一個(gè)程序:
#!/usr/bin/env python
print "Hello, world!"
Python的歷史Python的創(chuàng)始人為Guido van Rossum。1989年圣誕節(jié)期間,在
阿姆斯特丹,Guido為了打發(fā)圣誕節(jié)的無(wú)趣,決心開發(fā)一個(gè)新的腳本解釋程序,做為 ABC 語(yǔ)言的一種繼承。之所以選中 Python(大蟒蛇的意思)作為程序的名字,是因?yàn)樗且粋€(gè)Monty Python的飛行馬戲團(tuán)的愛好者。
ABC是由Guido參加設(shè)計(jì)的一種教學(xué)語(yǔ)言。就Guido本人看來(lái),ABC 這種語(yǔ)言非常優(yōu)美和強(qiáng)大,是專門為非專業(yè)程序員設(shè)計(jì)的。但是ABC語(yǔ)言并沒(méi)有成功,究其原因,Guido 認(rèn)為是非開放造成的。Guido 決心在 Python 中避免這一錯(cuò)誤(的確如此,Python 與其它的語(yǔ)言如
C、
C++和
Java結(jié)合的非常好)。同時(shí),他還想實(shí)現(xiàn)在 ABC 中閃現(xiàn)過(guò)但未曾實(shí)現(xiàn)的東西。
就這樣,Python在Guido手中誕生了。實(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在編程語(yǔ)言中的定位雖然 Python 可能被粗略地分類為"腳本語(yǔ)言(scripting language)", 實(shí)際上一些大規(guī)模軟件開發(fā)計(jì)劃例如 Zope, Mnet 及
BitTorrent.
Google也廣泛地使用它。 Python 的支持者較喜歡稱它為一種高階動(dòng)態(tài)編程語(yǔ)言 , 原因是"腳本語(yǔ)言" 泛指單用作簡(jiǎn)單編程任務(wù)如 shell scripts ,而Python不能與
JavaScript等只能處理簡(jiǎn)單任務(wù)的編程語(yǔ)言相提并論。
Python的特色可擴(kuò)充性可說(shuō)是Python作為一種編程語(yǔ)言的特色。新的內(nèi)置模塊(module)可以用C 或 C++寫成。而我們也可為現(xiàn)成的模塊加上Python的接口。Python可以使用戶避免過(guò)分的語(yǔ)法的羈絆而將精力主要集中到所要實(shí)現(xiàn)的程序任務(wù)上。
Python也被稱為是一門清晰的語(yǔ)言。因?yàn)樗淖髡咴谠O(shè)計(jì)它的時(shí)候,總的指導(dǎo)思想是,對(duì)于一個(gè)特定的問(wèn)題,只要有一種最好的方法來(lái)解決就好了。這在由Tim Peters寫的python格言(稱為The Zen of Python)里面表述為:
There should be one-- and preferably only one --obvious way to do it.
有意思的是,這正好和
Perl語(yǔ)言(另一種功能類似的高級(jí)動(dòng)態(tài)語(yǔ)言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。這似乎是人們常把Perl和Python互相比較的重要原因。
Python語(yǔ)言是一種清晰的語(yǔ)言的另一個(gè)意思是,它的作者有意的設(shè)計(jì)限制性很強(qiáng)的語(yǔ)法,使得不好的編程習(xí)慣(例如if語(yǔ)句的下一行不向右縮進(jìn))都不能通過(guò)編譯。這樣有意的強(qiáng)制程序員養(yǎng)成良好的編程習(xí)慣。其中很重要的一項(xiàng)就是Python的縮進(jìn)規(guī)則。
例如if語(yǔ)句:
if age<21:
print "You cannot buy wine!\n"
print "But you can buy chewing gum.\n"
print "this is outside if\n"
一個(gè)和其他大多數(shù)語(yǔ)言(如C)的區(qū)別就是,一個(gè)模塊的界限,完全是由每行的首字符在這一行的位置來(lái)決定的(而
C語(yǔ)言是用一對(duì)花括號(hào){}來(lái)明確的定出模塊的邊界的,與字符的位置毫無(wú)關(guān)系)。這一點(diǎn)曾經(jīng)引起過(guò)爭(zhēng)議。因?yàn)樽詮腃這類的語(yǔ)言誕生后,語(yǔ)言的語(yǔ)法含義與字符的排列方式分離開來(lái),曾經(jīng)被認(rèn)為是一種程序語(yǔ)言的進(jìn)步。不過(guò)不可否認(rèn)的是,通過(guò)強(qiáng)制程序員們縮進(jìn)(包括if,for和函數(shù)定義等所有需要使用模塊的地方),Python確實(shí)使得程序更加清晰和美觀。
另外Python在其他部分的設(shè)計(jì)上也堅(jiān)持了清晰劃一的風(fēng)格,這使得Python稱為一門易讀性、易維護(hù)性好,并且被大量用戶所歡迎的、用途廣泛的語(yǔ)言。
Python的局限雖然Python是一個(gè)非常成功的語(yǔ)言,但是也有必要明白它的局限性。
1. 運(yùn)行效率低下
目前為止,Python可以說(shuō)是所有主流腳本語(yǔ)言中速度最慢的。(是這樣么?待考.)這與其腳本引擎的設(shè)計(jì)思路有關(guān)。
如果你的應(yīng)用對(duì)于速度有著較高的要求,就要考慮Python是否能滿足需要。不過(guò)這一點(diǎn)可以通
過(guò)使用C編寫關(guān)鍵模塊,然后由Python調(diào)用的方式加以部分解決。
2. 多線程支持欠佳
Python支持多線程,但是其運(yùn)行效率也不高。
3. 獨(dú)特的語(yǔ)法
這也許不應(yīng)該被稱為局限,但是它用縮進(jìn)來(lái)區(qū)分語(yǔ)句關(guān)系的方式還是給很多初學(xué)者帶來(lái)了困惑。
即便是很有經(jīng)驗(yàn)的Python程序員,也可能陷入陷阱當(dāng)中。最常見的情況是tab和空格的混用會(huì)導(dǎo)
致錯(cuò)誤,而這是用肉眼無(wú)法分別的。
4. 無(wú)類型
作為一種動(dòng)態(tài)語(yǔ)言,隨時(shí)隨地創(chuàng)建和使用變量是Python給我們帶來(lái)的巨大的便利。但是它也會(huì)
使得程序不嚴(yán)謹(jǐn),某些錯(cuò)誤只有在運(yùn)行中才可能出現(xiàn)。所以,使用Python編程的時(shí)候,要對(duì)類
型做到心里有數(shù)。這也使得Python的IDE工具無(wú)法提供便利的自動(dòng)完成等功能。
Python的前景Python在編程領(lǐng)域的占有率一直處于穩(wěn)步上升之中,根據(jù)最新的數(shù)據(jù),Python排名第七。前六名分別是Java,
C,VB,C++,PHP和Perl. 作為一個(gè)很年輕的語(yǔ)言,Python的位置已經(jīng)相當(dāng)令人振奮了。隨著微軟將Python納入
.Net 平臺(tái),相信Python的將來(lái)會(huì)更加強(qiáng)勁發(fā)展。Python 很可能會(huì)成為.Net平臺(tái)快速開發(fā)的主流語(yǔ)言。
欲了解這方面情況,請(qǐng)參考Iron Python的相關(guān)信息.
著名的搜索引擎 Google 也大量使用Python。
更加令人吃驚的是,在Nokia智能手機(jī)所采用的Symbian操作系統(tǒng)上,Python成為繼C++,Java之后的
第三個(gè)編程語(yǔ)言!可見Python的影響力之巨大。
Python的應(yīng)用Zope-應(yīng)用服務(wù)器
Plone-內(nèi)容管理系統(tǒng)
Django-鼓勵(lì)快速開發(fā)的web framework
Twisted - Python Network Application Framework Python的網(wǎng)絡(luò)應(yīng)用程序框架
TurboGears - 另一個(gè)Web應(yīng)用快速開發(fā)框架
Bit Torrent - 著名的BT下載工具
2006年的Google編程大賽已經(jīng)將Python作為參賽語(yǔ)言之一