讀書筆記—《Head First Python》

我為啥要讀這本書?

讀《Head First Head》這本書有兩個(gè)原因:

不得不說,第一個(gè)原因是Python本身吸引了我。Python是一種編程語言,誕生于20世紀(jì)90年代初,自從2004年以后Python的使用率呈線性增長。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言。截止2016年1月,前十名的編程語言如下:

可以看出Python已經(jīng)名列第5,增長勢頭強(qiáng)勁。既然已經(jīng)有這么多人選擇了Python,那抱著“能夠成為懶螞蟻”的愿望,我也得學(xué)學(xué)。

第二個(gè)原因,是“Head First(中文版譯為深入淺出)”系列圖書的特點(diǎn)“黏住”了我。以前就看過該系列的其它書籍,如:設(shè)計(jì)模式、面向?qū)ο蠓治雠c設(shè)計(jì)、Java等。它以特殊的方式排版,由大量的圖片和有趣的內(nèi)容組合構(gòu)成,幫助讀者達(dá)到非疲勞的沉浸式學(xué)習(xí)效果。

Python有什么與眾不同的地方?

作為一門編程語言,Python同樣有語句、表達(dá)式、操作符、函數(shù)、模塊、方法和類等等。但它與眾不同的地方是:優(yōu)雅、明確、簡單,在這些設(shè)計(jì)哲學(xué)之上Python提供了大量的、功能強(qiáng)大的編程庫,并且都是開源的!

說了那么多,我們先從一個(gè)簡單的示例來認(rèn)識Python:

上面的代碼非常簡短,就完成了讀寫文件的操作。沒錯,你可以看出Python不用聲明變量類型,不用象其它編程語言一樣要求你:“要告訴我讀取多少個(gè)字節(jié)哦”;“要防止超出文件末尾哦”;“對比起,亂碼是因?yàn)槟阋D(zhuǎn)換為漢字編碼哦”;“要牢記必須要關(guān)閉文件哦,否則我會崩潰的!”。相信我,你去度娘輸入“java讀寫文件”,然后對比一下代碼就知道Python有多簡單優(yōu)雅了。Python的創(chuàng)始人提倡編程語言應(yīng)該這樣:按照程序員的意圖做,而不是要程序員告訴怎么做。

我是如何行動的?

設(shè)計(jì)良好的軟件系統(tǒng),大多提供數(shù)據(jù)導(dǎo)出功能,通過這種數(shù)據(jù)共享的方法,可以用另外的程序擴(kuò)展當(dāng)前系統(tǒng)不具備的功能,如:制作更靈活的報(bào)表。在公司內(nèi)部,財(cái)務(wù)系統(tǒng)、B2C直銷系統(tǒng)等都有數(shù)據(jù)導(dǎo)出功能。

為此我設(shè)計(jì)了一個(gè)小的模擬需求:從源文件(csv格式)讀取所有行;去掉首行(表頭);過濾掉某列包含關(guān)鍵字的行;把整理好的行寫入目標(biāo)文件(csv格式)。

源文件的格式如下(csv格式就是逗號分隔的文本文件,用excel可以打開):

處理后的新文件格式如下:

Python的源代碼如下:

上面短短的代碼已經(jīng)完成了設(shè)想的需求。Python提供的csv模塊可以從文件讀取數(shù)據(jù)后,直接轉(zhuǎn)換為list對象,然后我們直接可以用類似訪問數(shù)組的方式讀取數(shù)據(jù)(在本例中是類似一個(gè)二維數(shù)組)。Python讓我們更關(guān)注要要做什么,而不用太關(guān)注如何做到(如:如何讀取一行、如何把一行拆分為列,請?jiān)俅蜗嘈盼?,你可以用java完成同樣的功能,但代碼絕對沒有這么優(yōu)雅簡潔)。

Python的其它亮點(diǎn)

技術(shù)上的亮點(diǎn),限于篇幅以及還在學(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開源項(xiàng)目多達(dá)2691款,網(wǎng)址是:http://www.oschina.net/project/lang/25/python,請大家自行查看吧。

總結(jié)

用Python可以開發(fā)互聯(lián)網(wǎng)、數(shù)據(jù)庫訪問、桌面圖形界面、科學(xué)計(jì)算、網(wǎng)絡(luò)通信、商業(yè)辦公以及游戲程序,基本涵蓋了大部分的軟件開發(fā)領(lǐng)域。但我目前更關(guān)注它處理數(shù)據(jù)的便捷性,因?yàn)樵诠緝?nèi)部有一些被稱為信息孤島的系統(tǒng),這些系統(tǒng)發(fā)揮著重要的生產(chǎn)作用,但由于種種原因,它們在數(shù)據(jù)共享、出具更多樣的決策報(bào)表等方面力不從心。用Python的數(shù)據(jù)高效開發(fā)能力作為粘合劑,不失為一種解決數(shù)據(jù)孤島的方案。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容