《蟒蛇烹飪大全》:很好的一本菜譜(Python Cookbook-O'Reilly 2013)

看這本書(shū)的起因是這個(gè)暑假過(guò)后要正式入職,有點(diǎn)本領(lǐng)恐慌,所以打算趁著暑假臨陣磨槍一下。

說(shuō)起來(lái)用python做主力編程語(yǔ)言已經(jīng)兩年了,但因?yàn)槠綍r(shí)寫(xiě)的主要是實(shí)驗(yàn),所以基本上是怎么順手怎么寫(xiě),只要能跑得起來(lái)就行,所以碼出來(lái)的東西一直挺難看。

看cookbook的主要目地是查缺補(bǔ)漏,了解一下之前沒(méi)怎么用過(guò)的比較高級(jí)的東西,以減少重復(fù)造輪子。


在我看來(lái),一本好的cookbook應(yīng)該包括以下內(nèi)容:

(A1)這個(gè)語(yǔ)言方方面面比較深一些的知識(shí)和技巧。

(A2)容易被忽略的知識(shí)點(diǎn)。?特別是那些“不知道也能寫(xiě)得出程序,但是知道了會(huì)覺(jué)得相見(jiàn)恨晚”的知識(shí)。


而不應(yīng)該包含以下內(nèi)容:

(B1)入門(mén)教程會(huì)覆蓋的內(nèi)容,不會(huì)就基本不可能寫(xiě)出程序那一類(lèi)。

(B2)應(yīng)用面很窄,大多數(shù)人都不會(huì)碰到的問(wèn)題。

(B3)問(wèn)題本身非常清楚、具體,一搜索就能找到,stackoverflow上回答得清清楚楚的問(wèn)題。


從這幾點(diǎn)來(lái)考查,我覺(jué)得這本書(shū)基本達(dá)到了以上幾個(gè)要求。

首先,(A1)全書(shū)七百多頁(yè),十五章的內(nèi)容下來(lái),方方面面覆蓋得算挺周到。(A2) 我的確學(xué)到了很多之前忽略了的知識(shí)。

其次,(B1)太過(guò)初級(jí)的內(nèi)容這本書(shū)里基本沒(méi)有出現(xiàn)。之前初學(xué)python的時(shí)候,我看的是Dive into python——一本挺好的python入門(mén)書(shū)。兩本書(shū)之間重疊的內(nèi)容非常少,說(shuō)明這本cookbook的確如它在前言中聲明的定位一樣,避免了太過(guò)入門(mén)性質(zhì)的內(nèi)容。

不過(guò),這個(gè)評(píng)價(jià)主要基于書(shū)中對(duì)python的核心部分的知識(shí)點(diǎn)取舍的,對(duì)于一些不屬于核心的知識(shí)(比如說(shuō)對(duì)特定package的知識(shí)),本書(shū)的對(duì)內(nèi)容的取舍還值得商榷。比如第3章中關(guān)于numpy的內(nèi)容,雖然不會(huì)在“兩小時(shí)python入門(mén)”出現(xiàn),卻很顯然會(huì)被包含在“兩小時(shí)python數(shù)據(jù)科學(xué)入門(mén)”中。事實(shí)上,對(duì)于原先完全不了解numpy的讀者來(lái)說(shuō),一個(gè)簡(jiǎn)單的numpy介紹,很可能比“問(wèn)題-解決方案-討論”這種cookbook格式要好得多。不過(guò)限于這本書(shū)的cookbook?體例,可能也很難有更好的處理辦法。

最后,美中不足的,這本書(shū)在(B2)和 (B3)兩點(diǎn)上還有比較大的改進(jìn)空間。一個(gè)知識(shí)點(diǎn)是否屬于(B2)(大多數(shù)人都用不到的)可能還屬于一個(gè)見(jiàn)仁見(jiàn)智的問(wèn)題,但一個(gè)知識(shí)點(diǎn)是否屬于(B3)(問(wèn)題描述特別具體清楚,一搜索就能找到stackoverflow上的答案)還是有比較客觀的標(biāo)準(zhǔn)的。這本書(shū)的第九、十等章出現(xiàn)了過(guò)多(B3)類(lèi)型的問(wèn)題,在我看來(lái)不是很有必要。


另外,這本書(shū)是針對(duì)Python 3寫(xiě)的,對(duì)于想要學(xué)習(xí)的Python 3的讀者來(lái)說(shuō),這是一個(gè)額外的好處。不過(guò),本書(shū)只講Python 3,完全不提Python 2和3之間的區(qū)別,如果只是單純想了解Python 2和3的區(qū)別,這不是一本合適的書(shū)。

我在讀這本書(shū)的過(guò)程中,跳過(guò)了第十一、十二、十五章的大部分內(nèi)容,主要原因是這幾部分內(nèi)容和我的工作關(guān)系不太大。并且,我在讀第四、八、九章的時(shí)候,?額外讀了幾篇關(guān)于generator、decorator和descriptor的tutorial來(lái)幫助理解,主要原因是我自己的python知識(shí)有缺漏。這些都是我個(gè)人的因素,和這本書(shū)本身的質(zhì)量關(guān)系不大。


以下是分章節(jié)的簡(jiǎn)評(píng)。

1. Data structures and algorithms

基礎(chǔ)的、通用的小技巧。當(dāng)然有很多內(nèi)容是讀之前就知道的,但也總有一些是不知道的?;旧厦恳黄级绦【?,看起來(lái)很快,而且實(shí)用性很強(qiáng),看了之后馬上就可以拿來(lái)現(xiàn)學(xué)現(xiàn)用。


2. Strings and Text

同上一章


3.Numbers, Dates, and Times

前一半的內(nèi)容很基礎(chǔ)和前兩章差不多。后面一些內(nèi)容是針對(duì)比較具體的情形的,通用性不那么強(qiáng)。其實(shí)這一類(lèi)的內(nèi)容就不是很適合cookbook這種體例吧。

比如有幾節(jié)是關(guān)于numpy內(nèi)容,感覺(jué)比較雞肋。因?yàn)橹灰怯眠^(guò)numpy的肯定都知道,但如果沒(méi)有用過(guò)numpy,只看這幾個(gè)簡(jiǎn)單的例子其實(shí)也學(xué)不會(huì)什么。這種情況本來(lái)只需要給numpy package一個(gè)簡(jiǎn)單的介紹,讓原先不知道的人知道有這么個(gè)東西存在、要用到的時(shí)候知道去找就可以了。


4.Iterators and generator

很用有的一章。不過(guò)如果之前對(duì)iterator和generator不是很熟的話(像我),有些地方需要對(duì)照著文檔或其他教程看。


5. Files and I/O

還不錯(cuò)。有點(diǎn)過(guò)于詳細(xì),一些邊邊角角的內(nèi)容也放在里面了,實(shí)際用的機(jī)會(huì)估計(jì)不多。


6. Data Encoding and Processing

講怎么讀寫(xiě)csv,json,xml,binary等等格式的數(shù)據(jù)。個(gè)人覺(jué)得意義不是很大,需要的時(shí)候直接google就可以方便找到的內(nèi)容。


7. Functions

還不錯(cuò)。后面幾節(jié)稍微難煩。


8. Classes and objects

前面幾節(jié)內(nèi)容不錯(cuò)。后面一半的內(nèi)容比較冗長(zhǎng)復(fù)雜。簡(jiǎn)單翻了翻,沒(méi)有仔細(xì)看。


9. Metaprogramming

這章其實(shí)放在第7、8章之前比較好。因?yàn)檫@章中講的decorator,如果不太熟的話,第7、8章會(huì)看得比較吃力。


10. Modules Packages

比較容易讀的一章。后半部分有一些內(nèi)容針對(duì)的問(wèn)題太具體,用到的機(jī)會(huì)不是很大 。


11. Network and Web Programming

簡(jiǎn)單翻了一下,沒(méi)有讀。因?yàn)楹湍壳暗墓ぷ鲗?shí)在關(guān)系不大,在未來(lái)一段時(shí)間內(nèi)估計(jì)也不太會(huì)用到。缺乏實(shí)際應(yīng)用的背景,光看書(shū)也理解不深。


12. Concurrency

同上一章


13. Utility Scripting and System Administration

挺有意思的一章。內(nèi)容有點(diǎn)雜亂,但是很多小技巧都挺有趣。


14. Testing, Debugging, and Exceptions

挺好的一章。部分內(nèi)容有點(diǎn)淺。但全部讀下來(lái)還是挺有收獲的。


15. C Extensions

前一半快速讀了一下,后一半只是翻了翻。因?yàn)闆](méi)有工作中還沒(méi)有用過(guò),比較細(xì)節(jié)的東西讀了也很難領(lǐng)會(huì)。

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

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

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