今年二月初,我偶然看到了一条推特:
《流畅的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)
《流畅的Python》第一版基于当时最新的 Python 3.4。这些年来,Python 不断丰富自己,既正式宣告了 Python 2 版本的终结,又快速地演进到了最新的 3.9 版本。
但是,由于作者关注的是 Python 的核心概念,探讨的是基本不会变化的特性,因此倒不必太担忧内容过时,它仍是一本非常推荐购买和阅读参考的书籍。
我非常关心它的第二版,但是也知道,写作需要时间,英文出版、中文翻译和中文出版也都需要时间,所以我们就一起静候佳音吧。