史夢(mèng)楚
【摘要】 隨著電腦和互聯(lián)網(wǎng)的發(fā)展和普及,很多人可以自己編寫程序。Web開發(fā)人員編寫網(wǎng)頁(yè)是在編程,動(dòng)畫創(chuàng)作人員使用Flash是在編程,系統(tǒng)管理員編寫管理腳本是在編程,編程無(wú)處不在。編程的語(yǔ)言也很多現(xiàn)在:JAVA、C++、Matlab、Python等。而Python相對(duì)其他語(yǔ)言更加簡(jiǎn)單,適用性更廣。本文通過(guò)對(duì)Python簡(jiǎn)單介紹,探討了Python的應(yīng)用領(lǐng)域及優(yōu)缺點(diǎn),并且通過(guò)Python與JAVA比較來(lái)更好的了解Python。
【關(guān)鍵字】 Python JAVA C++
一、Python 簡(jiǎn)史
Python是由Guido van Rossum在1989年圣誕節(jié)期間開發(fā)的一種腳本語(yǔ)言。Python1.0 發(fā)布與1991年,并沒有像Java引起巨大轟動(dòng)。Python 2.0發(fā)布于2000 年,實(shí)現(xiàn)了完整的垃圾回收,而且支持Unicode。Python社區(qū)也逐步完善,對(duì)Python 的發(fā)展和推廣起到了非常重要的作用。到2008年,Python 3.0正式發(fā)布,Python已經(jīng)成為一種集支持命令式程序設(shè)計(jì)、函數(shù)式編程、面向?qū)ο蟪绦蛟O(shè)計(jì)、面向側(cè)面的程序設(shè)計(jì)、泛型編程多種編程范式于一身的腳本語(yǔ)言。
二、Python 的應(yīng)用領(lǐng)域
Python的應(yīng)用范圍很廣,遍及幾乎所有的程序設(shè)計(jì)領(lǐng)域,是一種名副其實(shí)“膠水語(yǔ)言”。Python在GUI,Web框架,系統(tǒng)編程,自然語(yǔ)言處理領(lǐng)域都有應(yīng)用。特別的,Python在網(wǎng)頁(yè)爬蟲、數(shù)據(jù)挖掘、科學(xué)計(jì)算、機(jī)器學(xué)習(xí)等領(lǐng)域已經(jīng)取得了不可替代的作用。網(wǎng)絡(luò)爬蟲:大部分的爬蟲都是使用Python實(shí)現(xiàn)的。Python原生的urllib簡(jiǎn)單易用。Scrapy更為強(qiáng)大,和rq/queue結(jié)合使用可以很容易地構(gòu)造一個(gè)分布式的爬蟲。數(shù)據(jù)挖掘和科學(xué)計(jì)算:Python 已經(jīng)成為數(shù)據(jù)挖掘領(lǐng)域的主力語(yǔ)言,形成了科學(xué)計(jì)算生態(tài)系統(tǒng)。包括數(shù)值計(jì)算庫(kù)SciPy、符號(hào)計(jì)算庫(kù),SymPy、繪圖庫(kù)Matplotlib 和各種scikit項(xiàng)目(機(jī)器學(xué)習(xí)、統(tǒng)計(jì)建模、圖像處理數(shù)據(jù)分析)。這些庫(kù)提供了一個(gè)強(qiáng)大嚴(yán)謹(jǐn)簡(jiǎn)單的數(shù)學(xué)環(huán)境。
三、 Python語(yǔ)言的優(yōu)點(diǎn)
Python語(yǔ)言優(yōu)雅、簡(jiǎn)單、實(shí)用。與另一種流行的腳本語(yǔ)言Perl比較,Python語(yǔ)言最鮮明的特點(diǎn)是其簡(jiǎn)潔、易讀的語(yǔ)法。
Python語(yǔ)言借鑒了很多其他編程語(yǔ)言的優(yōu)點(diǎn),并把它們用非常簡(jiǎn)單、協(xié)調(diào)的語(yǔ)法融合在一起。Python語(yǔ)言內(nèi)置了很多開發(fā)人員期望的并作為主流語(yǔ)言都必備的基礎(chǔ)工具和特性,使其在安裝后就能立即開始使用。Python語(yǔ)言有一個(gè)顯著的優(yōu)點(diǎn)是自帶電池(Batteries Included),意指其豐富完善的類庫(kù);除此之外,Python語(yǔ)言本身還帶有一個(gè)可視化的集成開發(fā)環(huán)境、一個(gè)Tkinter可視化類庫(kù)、一個(gè)性能優(yōu)化器和許多其他工具。在其他語(yǔ)言中,這些都是需要額外獲取的。這些工具在大多數(shù)情況下能滿足一個(gè)專業(yè)開發(fā)人員的大部分需求。對(duì)于初學(xué)者而言,這些工具完全能滿足其編程需求。
四、Python語(yǔ)言的缺點(diǎn)
作為一種動(dòng)態(tài)語(yǔ)言,Python的性能一直為人所詬病。實(shí)際上,Python的執(zhí)行與一般腳本語(yǔ)言還是有很大的區(qū)別的。Python也有自己的Python Virtual Machine,.py 文件會(huì)被先編譯成Python的byte code,再通過(guò)虛擬機(jī)執(zhí)行。Byte code在Python 虛擬機(jī)里對(duì)應(yīng)的是PyCode Object對(duì)象。加載模塊時(shí),模塊對(duì)應(yīng)的PyCode Object 對(duì)象就被寫入了.pyc 文件,整個(gè)虛擬機(jī)模擬x86上程序的執(zhí)行。這種執(zhí)行方式比一般的虛擬機(jī)如JVM 更為高級(jí)、靈活和抽象,與此同時(shí)帶來(lái)的就是性能的下降。當(dāng)然,Python 也有一些其他的缺點(diǎn),比如很容易被反編譯,可能不適合于大型的商業(yè)項(xiàng)目。社區(qū)沒有Ruby統(tǒng)一,類的命名比較混亂。然而這些缺點(diǎn)并沒有帶來(lái)太多的問題,隨著Python 的進(jìn)一步發(fā)展,在可以預(yù)見的未來(lái)這些問題必將解決。
五、Python語(yǔ)言與Java語(yǔ)言的比較
(1) Hello,World。對(duì)于初學(xué)者來(lái)說(shuō),Python語(yǔ)言和Java語(yǔ)言最大的區(qū)別就是:Python語(yǔ)言是解釋型語(yǔ)言,任何語(yǔ)句都可以在命令行中立即執(zhí)行并得到反饋;而Java語(yǔ)言則是編譯型語(yǔ)言,程序運(yùn)行需要經(jīng)過(guò)傳統(tǒng)的“編輯/編譯/執(zhí)行”流程,在交互性方面沒有Python語(yǔ)言方便。Java語(yǔ)言是面向?qū)I(yè)人員設(shè)計(jì)的,所以這些流程對(duì)專業(yè)人員來(lái)說(shuō)不是個(gè)很大的問題;但對(duì)初學(xué)者來(lái)說(shuō),Java語(yǔ)言往往顯得不夠友好,有時(shí)甚至令人迷惑。(2)空格。Python語(yǔ)言使用縮進(jìn)來(lái)定義代碼塊,這一點(diǎn)很特別,尤其是對(duì)于有經(jīng)驗(yàn)的開發(fā)人員來(lái)說(shuō)。Java語(yǔ)言使用大括號(hào)“{}”來(lái)顯示的定義一段代碼塊的開始和結(jié)束,Python語(yǔ)言則不同,它完全依賴縮進(jìn)來(lái)劃分代碼塊。使用縮進(jìn)的最大優(yōu)點(diǎn)是編譯器強(qiáng)制保證了代碼的規(guī)范性,在嚴(yán)格要求的代碼縮進(jìn)之下,Python語(yǔ)言代碼非常整齊規(guī)范,可讀性很高。在其他語(yǔ)言中,縮進(jìn)的選擇是開發(fā)人員的事情,每個(gè)人都可以按自己的喜好定制,但在Python語(yǔ)言中,這已經(jīng)成為語(yǔ)言本質(zhì)的一部分。
結(jié)論:自Python1989 年誕生至今,它逐漸被廣泛應(yīng)用于處理系統(tǒng)運(yùn)維,Web開發(fā)和數(shù)據(jù)挖掘機(jī)器學(xué)習(xí)等領(lǐng)域。Python 的簡(jiǎn)單易學(xué)和強(qiáng)大的功能使得它目前已經(jīng)成為了最流行的編程語(yǔ)言之一,眾多國(guó)外大學(xué)都已經(jīng)將Python作為CS專業(yè)學(xué)生的第一門語(yǔ)言。在可以預(yù)見的未來(lái),Python 必將成為一種通用而強(qiáng)大的語(yǔ)言。
參 考 文 獻(xiàn)
[1](挪威)Magnus Lie Hetland Python基礎(chǔ)教程[M].人民郵電出版社,2010.
[2]管華.對(duì)當(dāng)今Python快速發(fā)展的研究與展望[J].信息系統(tǒng)工程.2015(12).