當前位置:
首頁 > 知識 > 年度最值得關注的Python進階書:《流暢的Python》

年度最值得關注的Python進階書:《流暢的Python》

今年很多人都在推薦一本書,《流暢的Python》。我實在一點,為大家爭取了 4 本贈書的福利(每本售價100多)。先仔細看看下面的簡介,然後再按照文末的贈書規則參與吧~~(規則簡單,參與門檻低)


以下內容由圖靈社區提供。


引子


Python官方教程的開頭是這樣寫的:「Python是一門既容易上手又強大的編程語言。」這句話本身並無大礙,但需要注意的是,正因為它既好學又好用,所以很多Python程序員只用到了其強大功能的一小部分。


很多Python開發者也表示,已經入門,但是很想全面擴充自己的知識系統,貌似市面上還很難找到一本闡述深刻全面而又包涵大量實戰技巧的Python進階書。

今天跟大家分享的就是一本Python開發者們翹首期盼的進階圖書,其英文版在豆瓣評分9.6,它是《流暢的Python》,中文版已經在亞馬遜率先上架,其他網店也將於本周先後上架。

年度最值得關注的Python進階書:《流暢的Python》



作者:Luciano Ramalho


譯者:安道 吳珂


定價:139.00元 / 電子書:69.99元


PSF研究員、知名PyCon演講者Luciano Ramalho心血之作


Python核心開發人員Victor Stinner、Alex Martelli等擔綱技術審校


全面深入,對Python語言關鍵特性剖析到位,兼顧Python 3和Python 2


大量詳盡代碼示例,並附有主題相關高質量參考文獻和視頻鏈接

本書致力於幫助Python開發人員挖掘這門語言及相關程序庫的優秀特性,避免重複勞動,同時寫出簡潔、流暢、易讀、易維護,並且具有地道Python風格的代碼。


本書尤其深入探討了Python語言的高級用法,涵蓋數據結構、Python風格的對象、並行與並發,以及元編程等不同的方面。


作譯者簡介


Luciano Ramalho


安道


專註於現代計算機技術的自由翻譯,譯有《Flask Web開發》《Python網路編程攻略》《Ruby on Rails教程》等書。


個人網站:http://about.ac/。


吳珂


現為Airbnb公司軟體工程師,所在團隊主要負責開發和維護各類可伸縮、高性能服務,並在Airbnb內推廣面向服務的系統架構。在分布式系統、雲存儲服務和跨平台SDK開發,以及大規模數據處理等方面有多年經驗。


Python官方教程(https://docs.python.org/3/tutorial/)的開頭是這樣寫的:「Python是一門既容易上手又強大的編程語言。」這句話本身並無大礙,但需要注意的是,正因為它既好學又好用,所以很多Python程序員只用到了其強大功能的一小部分。

只需要幾個小時,經驗豐富的程序員就能學會用Python寫出實用的程序。然而隨著這最初高產的幾個小時變成數周甚至數月,在那些先入為主的編程語言的影響下,開發者們會慢慢地寫出帶著「口音」的Python代碼。即便Python是你的初戀,也難逃此命運。因為在學校里,抑或是那些入門書上,教授者往往會有意避免只跟語言本身相關的特性。


另外,向那些已在其他語言領域裡有了豐富經驗的程序員介紹Python的時候,我還發現了一個問題:人們總是傾向於尋求自己熟悉的東西。受到其他語言的影響,你大概能猜到Python會支持正則表達式,然後就會去查閱文檔。但是如果你從來沒見過元組拆包(tuple unpacking),也沒聽過描述符(descriptor)這個概念,那麼估計你也不會特地去搜索它們,然後就永遠失去了使用這些Python獨有的特性的機會。這也是本書試圖解決的一個問題。


這本書並不是一本完備的Python使用手冊,而是會強調Python作為編程語言獨有的特性,這些特性或者是只有Python才具備的,或者是在其他大眾語言里很少見的。Python語言核心以及它的一些庫會是本書的重點。


本書的結構


如果你是本書的目標讀者,那你應該可以從本書的任意一章開始閱讀,但是如果按照我寫作時的構思來的話,本書一共分為六個獨立的部分,每個部分內的章節最好按照順序來讀。


在介紹讓你自己實現某些功能的方法之前,我通常會先把現成可用的工具講清楚。比如說第二部分的第2 章覆蓋了序列類型(sequence type),但是像collections.deque 這種類可能就會一帶而過。一直到第四部分,我們才會看看如何從抽象基類(abstract base class, ABC)中獲利,抽象基類則被封裝在collections.abc 這個包里。如果想創建自己的ABC,你可能得看到第四部分的最後一些內容才行,因為我一直覺得,如果沒有熟練使用ABC 的經驗,貿然去實現一套自己的東西是不合適的。


這樣做有幾個好處。第一,知道有什麼現成的工具可用,能避免重新發明輪子。畢竟我們使用現有集合類型(collection type)的概率要遠大於自己動手寫一套新的。第二,這樣一來,在討論如何寫新類型之前,我們能夠有更多的機會來了解這些現成類的高級用法。第三,比起從零開始構建一個ABC,繼承已有的ABC 庫應該會簡單一些。最後,我認為在看過一些實際的案例之後,理解抽象會更輕鬆。


當然,這樣也會帶來一些不便之處,比如書里的向前引用就會分散在各個不同的章節裡面。但是經過上述這番梳理,我想這一點不便之處也是可以容忍的。


下面是本書每一部分的主題。


第一部分

第一部分只有單獨的一章,講解的是Python 的數據模型(data model),以及如何為了保證行為一致性而使用特殊方法(比如__repr__),畢竟Python 的一致性是出了名的。其實整本書幾乎都是在講解Python 的數據模型,第1 章算是一個概覽。


第二部分


第二部分包含了各種集合類型:序列(sequence)、映射(mapping)和集合(set),另外還提及了字元串(str)和位元組序列(bytes)的區分。說起來,最後這一點也是讓親者(Python 3 用戶)快,仇者(Python 2 用戶)痛的一個關鍵,因為這個區分致使Python 2 代碼遷移到Python 3 的難度陡增。第二部分的目標是幫助讀者回憶起Python 內置的類庫,順帶解釋這些類庫的一些不太直觀的地方。具體的例子有Python 3 如何在我們觀察不到的地方對dict 的鍵重新排序,或者是排序有區域(locale)依賴的字元串時的注意事項。為了達到本部分的目標,有些地方的講解會比較大而全,像序列類型和映射類型的變種就是這樣;有時則會寫得很深入,比方說我會對dict 和set 底層的散列表進行深層次的討論。


第三部分


如何把函數作為一等對象(first-order object)來使用。第三部分首先會解釋前面這句話是什麼意思,然後話題延伸到這個概念對那些被廣泛使用的設計模型的影響,最後讀者會看到如何利用閉包(closure)的概念來實現函數裝飾器(function decorator)。這一部分的話題還包括Python 的這些基本概念:可調用(callable)、函數屬性(function attribute)、內省(introspection)、參數註解(parameter annotation)和Python 3 里新出現的nonlocal 聲明。


第四部分


到了這裡,書的重點轉移到了類的構建上面。雖然在第二部分里的例子里就有類聲明(class declaration)的出現,但是第四部分會呈現更多的類。和任何面向對象語言一樣, Python 還有些自己的特性,這些特性可能並不會出現在你我學習基於類的編程的語言中。這一部分的章節解釋了引用(reference)的原理、「可變性」的概念、實例的生命周期、如何構建自定義的集合類型和ABC、多重繼承該怎麼理順、什麼時候應該使用操作符重載及其方法。


第五部分


Python 中有些結構和庫不再滿足於諸如條件判斷、循環和子程序(subroutine)之類的順序控制流程,第五部分的筆墨會集中在這些構造和庫上。我們會從生成器(generator)起步,然後話題會轉移到上下文管理器(context manager)和協程(coroutine),其中會涵蓋新增的功能強大但又不容易理解的yield from 語法。這一部分以並發性和面向事件的I/O 來結尾,其中跟並發性相關的是collections.futures 這個很新的包,它藉助futures 包把線程和進程的概念給封裝了起來;而跟面向事件I/O 相關的則是asyncio,它的背後是基於協程和yield from 的futures 包。


第六部分

第六部分的開頭會講到如何動態創建帶屬性的類,用以處理諸如JSON 這類半結構化的數據。然後會從大家已經熟悉的特性(property)機制入手,用描述符從底層來解釋Python 對象屬性的存取。同時,函數、方法和描述符的關係也會被梳理一遍。第六部分會從頭至尾地實現一個欄位驗證器,在這個過程中我們會遇到一些微妙的問題,然後在最後一章中就自然引出像類裝飾器(class decorator)和元類(metaclass)這些高級的概念。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

做數據分析時,R 用戶如何學習 Python?
Python速度雖然慢,但它工作效率高啊!不服?
用 Python 實現每秒處理 120 萬次 HTTP 請求
用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面

TAG:Python |

您可能感興趣

性價比不錯!關注度極高的 Puma Thunder Spectra 下周發售!
Off-White,700 V2,Tinker Hatfield,悟空等等等最近需要關注的球鞋都在這了
推遲到下周二了!React Vapor Street 的發售絕對值得關注!
關注度超新iPhone 為什麼iPhone SE2如此受期待?
關注度極高!解構風格的 Vans Vault 「Inside Out」 系列即將發售
作為潮人,你在YouTube上面不得不關注的三位Hyperbeasts!
新款iPhone手機該如何命名?iPhone9關注度頗高
關注科技&電子領域的新興CMF設計趨勢 | WGSN Lifestyle & Interiors
年度最受關注球鞋!Air Jordan 11 「Concord」 發售日期確定
2018年值得關注的潛力幣種之——Mercury Protocol
搭載 React 值得關注!全新白黑藍 Nike Vapor Street 即將發售
關注度超過Virgil聯名!閃電替代款 Air Jordan 1 即將發售!
關注隱私、類 Tails 但無 systemd 及非自由軟體的 live disc 發行版 Heads 發布 0.4 版
Think with Google峰會:中國出海50強榜單公布 除了華為阿里,這些新品牌值得關注
Weiss Ratings:SEC過於關注加密技術負面影響
粉絲關注!《Fate/Apocrypha》周邊服飾亮相
復古又個性不凡!這次的 RT x Air Force 1 Hi 新品值得關注!
搭載混動系統的大眾Atlas Cross Sport引人關注
今年關注度最高聯名之一!Fear of God x Nike 鞋款首次曝光
全新 UNDFTD x Air Jordan 4 突然亮相網路,這些細節值得你關注!