如果只推荐一本 Python 进阶书籍,我要 Pick 它

本文作者:豌豆花下猫 , 来源:Python猫
今年二月初 , 我偶然看到了一条推特:
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
《流畅的Python》一书的作者发布了一条激动人心的消息:他正在写作第二版!
如果要票选最佳的 Python 进阶类书目 , 这本书肯定会是得票率最高的书籍之一 。 我在最早写“Python猫荐书系列”时 , 就想推荐它 , 但又觉得好东西应该留到最后 , 所以一直拖到了现在……
如果你读过它 , 肯定也会认为它值得推荐;如果你没有 , 那请往下阅读 , 看我的介绍能否打动你把它列为必读书目吧~
这本书的英文名是《Fluent Python》 , 在 2015 年 8 月出版 。 两年后 , 国内的图灵教育出品了译本 , 出版时间是 2017 年 5 月 , 获得豆瓣 9.4 高分 。 (图书翻译/出版真是个漫长的过程啊)
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
作者 Luciano Ramalho 是个巴西人、资深的 Python 程序员/演讲者、PSF(Python软件基金会)成员 。 书籍的技术审校与推荐人囊括了圈内的一众大咖 。
此书一出 , 大受圈内好评 , 各国出版社纷纷引进版权 , 目前至少已有 9 种语言版本(来数数你认识几种?):
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
PS:图片出自@fluentpython官推 , 简体中文版最薄 , 巧合占据C位 。 根据图灵教育统计 , 简体中文版销量超过4万册 , 预计在2020年能超越英文版的销量 。
那么 , 这本书到底写了些什么呢?又有哪些特别之处呢?
全书内容充实 , 除去前言、附录和术语表这些内容 , 共分为六个部分 21 章节 。 我将核心章节内容制作了一份思维导图:
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
(在Python猫公众号回复『流畅』 , 有完整的高清原图)
以上是主要章节的思维导图 , 图中的数字是折叠起来的分支数 。
下面给大家看看部分的细节图:
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
如果只推荐一本 Python 进阶书籍,我要 Pick 它文章插图
原图太大 , 展示不下 。 在Python猫公众号内回复『流畅』 , 有完整的高清原图、PDF 版本和 MarkDown 版本
从章节上可以看出 , 这本书主要面向中高级的开发者 。 它基本不涉及入门级内容 , 反而聚焦在数据模型、数据结构、函数对象、面向对象、控制流程与元编程等话题上 。
打开书本第一章 , 作者用寥寥十几行 Python 代码 , 就徒手实现了一副扑克牌:
import collectionsCard = 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 进阶书籍,我要 Pick 它文章插图
《流畅的Python》作者与中文版合影
【如果只推荐一本 Python 进阶书籍,我要 Pick 它】接着 , 它介绍了 Python 中一些内置类型的特性(序列类型、映射类型、文本和字节类型) , 介绍作为特殊对象的函数以及一般性对象的用法 , 介绍控制流程(迭代器、生成器、上下文管理器、协程和并发编程) , 最后深入到素有黑魔法之称的元编程(描述符和元类) 。