一、Python發(fā)展歷史
Python的作者,Guido von Rossum,荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。
1989年,為了打發(fā)圣誕節(jié)假期,Guido開始寫Python語言的編譯器。Python這個(gè)名字,來自Guido所摯愛的電視劇Monty Python's Flying Circus。他希望這個(gè)新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學(xué)易用,可拓展的語言。
Python從一開始就特別在意可拓展性。Python可以在多個(gè)層次上拓展:從高層上,你可以直接引入. py文件。在底層,你可以引用C語言的庫。Python程序員可以快速的使用Python寫. py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí),Python程序員可以深入底層,寫C程序,編譯為.so文件引入到Python中使用。Python程 序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)。
Python界的名言是:人生苦短,我用python
二、Python優(yōu)缺點(diǎn)
(1)、優(yōu)點(diǎn)
簡單——Python是一種代表簡單主義思想的語言。閱讀一個(gè)良好的Python程序就感覺像是在讀英語一樣,盡管這個(gè)英語的要求非常嚴(yán)格!Python的這種偽代碼本質(zhì)是它最大的優(yōu)點(diǎn)之一。它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。
易學(xué)——就如同你即將看到的一樣,Python極其容易上手。前面已經(jīng)提到了,Python有極其簡單的語法。
免費(fèi)、開源——Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念。這是為什么Python如此優(yōu)秀的原因之一——它是由一群希望看到一個(gè)更加優(yōu)秀的Python的人創(chuàng)造并經(jīng)常改進(jìn)著的。
高層語言——當(dāng)你用Python語言編寫程序的時(shí)候,你無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)。
可移植性——由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過改動(dòng)使它能夠工作在不同平臺(tái)上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就可以在下述任何平臺(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開發(fā)的Android平臺(tái)!
解釋性——這一點(diǎn)需要一些解釋。一個(gè)用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語言(二進(jìn)制代碼,即0和1)。這個(gè)過程通過編譯器和不同的標(biāo)記、選項(xiàng)完成。當(dāng)你運(yùn)行你的程序的時(shí)候,連接/轉(zhuǎn)載器軟件把你的程序從硬盤復(fù)制到內(nèi)存中并且運(yùn)行。而Python語言寫的程序不需要編譯成二進(jìn)制代碼。你可以直接從源代碼 運(yùn)行 程序。在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語言并運(yùn)行。事實(shí)上,由于你不再需要擔(dān)心如何編譯程序,如何確保連接轉(zhuǎn)載正確的庫等等,所有這一切使得使用Python更加簡單。由于你只需要把你的Python程序拷貝到另外一臺(tái)計(jì)算機(jī)上,它就可以工作了,這也使得你的Python程序更加易于移植。
面向?qū)ο蟆?strong>Python既支持面向過程的編程也支持面向?qū)ο蟮木幊?/strong>。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的。在“面向?qū)ο蟆钡恼Z言中,程序是由數(shù)據(jù)和功能組合而成的對(duì)象構(gòu)建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強(qiáng)大又簡單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?/p>
可擴(kuò)展性——如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然后在你的Python程序中使用它們。
可嵌入性——你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
豐富的庫——Python標(biāo)準(zhǔn)庫確實(shí)很龐大。它可以幫助你處理各種工作,包括正則表達(dá)式、文檔生成、單元測(cè)試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的“功能齊全”理念。除了標(biāo)準(zhǔn)庫以外,還有許多其他高質(zhì)量的庫,如wxPython、Twisted和Python圖像庫等等。
概括——Python確實(shí)是一種十分精彩又強(qiáng)大的語言。它合理地結(jié)合了高性能與使得編寫程序簡單有趣的特色。
規(guī)范的代碼——Python采用強(qiáng)制縮進(jìn)的方式使得代碼具有極佳的可讀性。
(2)、缺點(diǎn)
運(yùn)行速度,有速度要求的話,用C++改寫關(guān)鍵部分吧。
國內(nèi)市場(chǎng)較?。▏鴥?nèi)以python來做主要開發(fā)的,目前只有一些web2.0公司)。但時(shí)間推移,目前很多國內(nèi)軟件公司,尤其是游戲公司,也開始規(guī)模使用他。
中文資料匱乏(好的python中文資料屈指可數(shù))。托社區(qū)的福,有幾本優(yōu)秀的教材已經(jīng)被翻譯了,但入門級(jí)教材多,高級(jí)內(nèi)容還是只能看英語版。
構(gòu)架選擇太多(沒有像C#這樣的官方.net構(gòu)架,也沒有像ruby由于歷史較短,構(gòu)架開發(fā)的相對(duì)集中。Ruby on Rails 構(gòu)架開發(fā)中小型web程序天下無敵)。不過這也從另一個(gè)側(cè)面說明,python比較優(yōu)秀,吸引的人才多,項(xiàng)目也多。
三、 Python應(yīng)用場(chǎng)景
Python經(jīng)常被用于Web開發(fā)。 比如,通過mod_wsgi模塊,Apache可以運(yùn)行用Python編寫的Web程序。Python定義 了WSGI標(biāo)準(zhǔn)應(yīng)用接口來協(xié)調(diào)Http服務(wù)器與基于Python的Web程序之間的通信。一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程序員輕松地開發(fā)和管理復(fù)雜的Web程序。
在很多操作系統(tǒng)里,Python是標(biāo)準(zhǔn)的系統(tǒng)組件。 大多數(shù)Linux發(fā)行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端下直接運(yùn)行Python。有一些Linux發(fā)行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portag e包管理系統(tǒng)。Python標(biāo)準(zhǔn)庫包含了多個(gè)調(diào)用操作系統(tǒng)功能的庫。通過pywin32這個(gè)第三方軟件 包,Python能夠訪問Windows的COM服務(wù)及其它Windows API。使用IronPython,Python程序能夠直接調(diào)用.Net Framework。一般說來,Python編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度、擴(kuò)展性幾方面都優(yōu)于普通的shell腳本。
NumPy,SciPy,Matplotlib可以讓Python程序員編寫科學(xué)計(jì)算程序。
PyQt、PySide、wxPython、PyGTK是Python快速開發(fā)桌面應(yīng)用程序的利器。
Python對(duì)于各種網(wǎng)絡(luò)協(xié)議的支持很完善,因此經(jīng)常被用于編寫服務(wù)器軟件、網(wǎng)絡(luò)爬蟲。第三方庫Twisted支持異步網(wǎng) 絡(luò)編程和多數(shù)標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議(包含客戶端和服務(wù)器),并且提供了多種工具,被廣泛用于編寫高性能的服務(wù)器軟件。
很多游戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫游戲的邏輯、服務(wù)器。相較于Python,Lua的功能更簡單、體積更?。欢鳳ython則支持更多的特性和數(shù)據(jù)類型。
YouTube、Google、Yahoo!、NASA都在內(nèi)部大量地使用Python。OLPC的操作系統(tǒng)Sugar項(xiàng)目的大多數(shù)軟件都是使用Python編寫。