我剛學程式設計的時候,有位從事c++開發的好友,傳授我經驗:
工作中80%的時間用著那常用的20%的語言知識,其他的等你需要的時候再去看就好了設想在初學python(或者其他語言)的時候只是去學習那20%常用的,如果再不願意去精進,那麼可能我永遠都不會有機會去了解描述符,也不會使用元類,最後成了乙個以為已經會程式設計、熟悉python的井底之蛙,所以當時我是拒絕的。因為我希望全面的了解這個語言的能力邊界,可能一些高階特性我並不能馬上掌握,但是在未來要用的時候要知道其實它能不能做到。當我一路走來事實上卻也多次使用「等需要的時候再去看」這個技巧,一方面精力有限,一方面也是沒有一本好書把這些工作中不太常用、難以理解的高階內容整理出來。
《流暢的python
》就是這樣一本難得的python高階書。很多新人可能不知道為什麼《流暢的python》在圈內這麼有名氣,這是因為它是一本專門介紹那些python語言裡面高階的,甚至獨有的特性的書,熟悉這些內容對工程師會有很大的提高。說個題外話,我之前面試別人時還考過不少這本書裡面的內容,不過結果比較慘....
反觀市面上充斥了大量的入門書,它們只會教你們學習那些python官方**就能學習到的python的語法(這也是為什麼很多人推薦直接看官方文件來學習),作者限於自身的技術實力,往往都會避免提及語言的本質、高階用法、獨有的觀點等,寫出來的**也就更談不上pythonic和idiomatic了。而在《流暢的python
》裡面你可以學到了很多實踐方法、語法特性和作者的理解,最重要的是幫助你樹立了正確的價值觀。我舉幾個例子吧:
我覺得 concurrent.futures 包很棒,它把執行緒、程序和佇列視作服務的基礎設定,不用自己動手直接處理。這真的是concurrent.futures的核心特點。希望這個包越來越被大家認可。
唉,這個話題很沉重。很多人黑python都喜歡這一點。書中對gil有比較深入的說明,尤其是提到了下面這句(敲黑板,各位注意了):
gil是cpython直譯器的侷限,與python語言無關。jython和ironpython沒有這種限制。「什麼是閉包?」是一道非常常見的面試題。網上可以搜到很多部落格文章都在說它,但是我印象裡面沒有發現誰總結的比這本書更簡潔和明確:
閉包指延伸了作用域的函式,其中包含函式定義體中引用,但是不在定義體中定義的非全域性變數... 它能訪問定義體之外定義的非全域性變數。在我剛學django的時候,我以為發音是[diˈdʒæŋɡoʊ],在參加第二屆pycon的時候,才知道原來d是不發音的,應該讀作 [ˈdʒæŋɡoʊ]。像這樣的本書也說到了乙個地方,就是__init__怎麼讀。我同事都知道我習慣說「雙下劃線-init」(under-under-init),其實正確的應該叫做「雙下-init」(這翻譯很對我胃口哇哈哈
推薦書籍(精選)
1.提高溝通技巧,學會好好說話 所謂的高情商,就是會說話 關鍵對話 贏在談判 你的口才價值千萬 2.克服不良習慣,科學管理時間 睡眠革命 硬派健身 把時間當做朋友 拖延心理學 3.公升級認知系統,提公升思想深度 慢思考,大腦超載時代的思考學 拆掉思維裡的牆 如何高效閱讀 天才在左,瘋子在右 4.增強...
ThoughtWorks QA推薦書籍
tools of critical thinking 0人評價 2014年2月6日讚回覆 來自 豆瓣讀書 軟體測試的藝術 8.4 218人評價 2014年2月6日讚回覆 來自 豆瓣讀書 3人評價 2014年2月6日讚回覆 來自 豆瓣讀書 敏捷軟體測試 7.4 63人評價 2014年2月6日讚回覆 來...
Linux程式設計推薦書籍
shell 程式設計 linux與unix shell程式設計指南 bash寶典 advanced bash scripting guide 如果你使用的是 gnu debian 系統,可以用 apt get install abs guide 安裝該文件 bash programming intr...