我為啥要讀這本書鲜结?
讀《Head First Head》這本書有兩個原因:
不得不說迟郎,第一個原因是Python本身吸引了我坎弯。Python是一種編程語言厦坛,誕生于20世紀(jì)90年代初露该,自從2004年以后Python的使用率呈線性增長睬棚。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言解幼。截止2016年1月抑党,前十名的編程語言如下:
可以看出Python已經(jīng)名列第5,增長勢頭強(qiáng)勁书幕。既然已經(jīng)有這么多人選擇了Python新荤,那抱著“能夠成為懶螞蟻”的愿望,我也得學(xué)學(xué)台汇。
第二個原因苛骨,是“Head First(中文版譯為深入淺出)”系列圖書的特點“黏住”了我篱瞎。以前就看過該系列的其它書籍,如:設(shè)計模式痒芝、面向?qū)ο蠓治雠c設(shè)計俐筋、Java等。它以特殊的方式排版严衬,由大量的圖片和有趣的內(nèi)容組合構(gòu)成澄者,幫助讀者達(dá)到非疲勞的沉浸式學(xué)習(xí)效果。
Python有什么與眾不同的地方请琳?
作為一門編程語言粱挡,Python同樣有語句、表達(dá)式俄精、操作符询筏、函數(shù)、模塊竖慧、方法和類等等嫌套。但它與眾不同的地方是:優(yōu)雅、明確圾旨、簡單踱讨,在這些設(shè)計哲學(xué)之上Python提供了大量的、功能強(qiáng)大的編程庫砍的,并且都是開源的痹筛!
說了那么多,我們先從一個簡單的示例來認(rèn)識Python:
上面的代碼非常簡短挨约,就完成了讀寫文件的操作味混。沒錯,你可以看出Python不用聲明變量類型诫惭,不用象其它編程語言一樣要求你:“要告訴我讀取多少個字節(jié)哦”翁锡;“要防止超出文件末尾哦”;“對比起夕土,亂碼是因為你要轉(zhuǎn)換為漢字編碼哦”馆衔;“要牢記必須要關(guān)閉文件哦,否則我會崩潰的怨绣!”角溃。相信我,你去度娘輸入“java讀寫文件”篮撑,然后對比一下代碼就知道Python有多簡單優(yōu)雅了减细。Python的創(chuàng)始人提倡編程語言應(yīng)該這樣:按照程序員的意圖做,而不是要程序員告訴怎么做赢笨。
我是如何行動的未蝌?
設(shè)計良好的軟件系統(tǒng)驮吱,大多提供數(shù)據(jù)導(dǎo)出功能,通過這種數(shù)據(jù)共享的方法萧吠,可以用另外的程序擴(kuò)展當(dāng)前系統(tǒng)不具備的功能左冬,如:制作更靈活的報表。在公司內(nèi)部纸型,財務(wù)系統(tǒng)拇砰、B2C直銷系統(tǒng)等都有數(shù)據(jù)導(dǎo)出功能。
為此我設(shè)計了一個小的模擬需求:從源文件(csv格式)讀取所有行狰腌;去掉首行(表頭)除破;過濾掉某列包含關(guān)鍵字的行;把整理好的行寫入目標(biāo)文件(csv格式)癌别。
源文件的格式如下(csv格式就是逗號分隔的文本文件皂岔,用excel可以打開):
處理后的新文件格式如下:
Python的源代碼如下:
上面短短的代碼已經(jīng)完成了設(shè)想的需求。Python提供的csv模塊可以從文件讀取數(shù)據(jù)后展姐,直接轉(zhuǎn)換為list對象,然后我們直接可以用類似訪問數(shù)組的方式讀取數(shù)據(jù)(在本例中是類似一個二維數(shù)組)剖毯。Python讓我們更關(guān)注要要做什么圾笨,而不用太關(guān)注如何做到(如:如何讀取一行、如何把一行拆分為列逊谋,請再次相信我擂达,你可以用java完成同樣的功能,但代碼絕對沒有這么優(yōu)雅簡潔)胶滋。
Python的其它亮點
技術(shù)上的亮點板鬓,限于篇幅以及還在學(xué)習(xí)中就不一一列舉了。前面提到Python在編程語言中已經(jīng)排名第5究恤,那有哪些著名的應(yīng)用呢俭令?
國外的有:
EVE-網(wǎng)絡(luò)游戲EVE大量使用Python進(jìn)行開發(fā)
Reddit -社交分享網(wǎng)站
Dropbox -文件分享服務(wù)
Fabric -用于管理成百上千臺Linux主機(jī)的程序庫
Trac -使用Python編寫的BUG管理系統(tǒng)
Mailman -使用Python編寫的郵件列表軟件
Mezzanine -基于Django編寫的內(nèi)容管理系統(tǒng)
Blender -以C與Python開發(fā)的開源3D繪圖軟件
在oschina上的python開源項目多達(dá)2691款,網(wǎng)址是:http://www.oschina.net/project/lang/25/python部宿,請大家自行查看吧抄腔。
總結(jié)
用Python可以開發(fā)互聯(lián)網(wǎng)、數(shù)據(jù)庫訪問理张、桌面圖形界面赫蛇、科學(xué)計算、網(wǎng)絡(luò)通信雾叭、商業(yè)辦公以及游戲程序悟耘,基本涵蓋了大部分的軟件開發(fā)領(lǐng)域。但我目前更關(guān)注它處理數(shù)據(jù)的便捷性织狐,因為在公司內(nèi)部有一些被稱為信息孤島的系統(tǒng)暂幼,這些系統(tǒng)發(fā)揮著重要的生產(chǎn)作用掘殴,但由于種種原因,它們在數(shù)據(jù)共享粟誓、出具更多樣的決策報表等方面力不從心奏寨。用Python的數(shù)據(jù)高效開發(fā)能力作為粘合劑,不失為一種解決數(shù)據(jù)孤島的方案鹰服。