如果只推薦一本 Python 書,我要 Pick 它!


今年二月初,我偶然看到了一條推特:

《流暢的Python》一書的作者發布了一條激動人心的消息:他正在寫作第二版!

如果要票選最佳的 Python 進階類書目,這本書肯定會是得票率最高的書籍之一。我在最早寫“Python貓薦書系列”時,就想推薦它,但又覺得好東西應該留到最后,所以一直拖到了現在……

如果你讀過它,肯定也會認為它值得推薦;如果你沒有,那請往下閱讀,看我的介紹能否打動你把它列為必讀書目吧~

這本書的英文名是《Fluent Python》,在 2015 年 8 月出版。兩年后,國內的圖靈教育出品了譯本,出版時間是 2017 年 5 月,獲得豆瓣 9.4 高分。(圖書翻譯/出版真是個漫長的過程啊)

作者 Luciano Ramalho 是個巴西人、資深的 Python 程序員/演講者、PSF(Python軟件基金會)成員。書籍的技術審校與推薦人囊括了圈內的一眾大咖。

此書一出,大受圈內好評,各國出版社紛紛引進版權,目前至少已有 9 種語言版本(來數數你認識幾種?):

PS:圖片出自@fluentpython官推,簡體中文版最薄,巧合占據C位。根據圖靈教育統計,簡體中文版銷量超過4萬冊,預計在2020年能超越英文版的銷量。

那么,這本書到底寫了些什么呢?又有哪些特別之處呢?

全書內容充實,除去前言、附錄和術語表這些內容,共分為六個部分 21 章節。我將核心章節內容制作了一份思維導圖:

(在Python貓公眾號回復『流暢』,有完整的高清原圖)

以上是主要章節的思維導圖,圖中的數字是折疊起來的分支數。

下面給大家看看部分的細節圖:

原圖太大,展示不下。在Python貓公眾號內回復『流暢』,有完整的高清原圖、PDF 版本和 MarkDown 版本

從章節上可以看出,這本書主要面向中高級的開發者。它基本不涉及入門級內容,反而聚焦在數據模型、數據結構、函數對象、面向對象、控制流程與元編程等話題上。

打開書本第一章,作者用寥寥十幾行 Python 代碼,就徒手實現了一副撲克牌:

import collections

Card = collections.namedtuple('Card', ['rank', 'suit'])


class FrenchDeck:
    ranks = [str(n) for n in range(2, 11)] + list('JQKA')
    suits = 'spades diamonds clubs hearts'.split()

    def __init__(self):
        self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks]

    def __len__(self):
        return len(self._cards)

    def __getitem__(self, position):
        return self._cards[position]

然后,直接就點出了全書最關注的核心話題:由各種特殊方法構成的數據模型。

特殊方法(special method)是__xxx__() 這種以前后雙下划線命名的東西,通常又被稱為魔術方法(magic method)和雙下方法(dunder method),是 Python 獨有的設計。

數據模型(data model)無疑是 Python 語言的關鍵核心,是得以形成所謂 Python 風格(pythonic)的基石。Python 中一切皆對象,而數據模型則是這些對象的接口規范,正是因為它,Python 得以獲得極強的行為一致性。

《流暢的Python》以數據模型為始,定下了全文的風格基調,即關注 Python 對象的構造以及語言內部的特性細節,目的是讓讀者寫出更地道、簡潔高效、可讀易用的代碼。

《流暢的Python》作者與中文版合影

接着,它介紹了 Python 中一些內置類型的特性(序列類型、映射類型、文本和字節類型),介紹作為特殊對象的函數以及一般性對象的用法,介紹控制流程(迭代器、生成器、上下文管理器、協程和並發編程),最后深入到素有黑魔法之稱的元編程(描述符和元類)。

全書 600 多頁,洋洋灑灑,旁征博引,內容充實到讓人應接不暇,讓人時不時就產生一種“又學到了新知識”的感覺,以及一種“哦我想進一步學習 xxx”的求知欲望。

很多讀過書的同學會有一個同感:它的“延伸閱讀/雜談”並不是閑筆,反而有些內容比正文更精彩,作者在此展示了他豐富的知識面(官方文檔、社區典故、語法演進、文章視頻、開源項目、語言差異等等),每一章都值得挖掘閱讀。目前沒有任何一本 Python 書籍能在這方面與它匹敵。

我推薦大家找到自己感興趣的章節進行閱讀,另外,有人做了非常不錯的讀書筆記(都挺長的),我放在這里:

http://www.hongweipeng.com/index.php/archives/1345 (by hongweipeng)

http://frankorz.com/2017/07/01/fluent-python-note (by 貓冬)

《流暢的Python》第一版基於當時最新的 Python 3.4。這些年來,Python 不斷豐富自己,既正式宣告了 Python 2 版本的終結,又快速地演進到了最新的 3.9 版本。

但是,由於作者關注的是 Python 的核心概念,探討的是基本不會變化的特性,因此倒不必太擔憂內容過時,它仍是一本非常推薦購買和閱讀參考的書籍。

我非常關心它的第二版,但是也知道,寫作需要時間,英文出版、中文翻譯和中文出版也都需要時間,所以我們就一起靜候佳音吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM