△点击上方“Python猫”关注 ,回复“1”领取电子书
作者:豌豆花下猫
来源:Python猫
今年二月初,我偶然看到了一条推特:
![](https://i-blog.csdnimg.cn/blog_migrate/5e587bc745f0d382180f5fe54f1a9fbc.png)
《流畅的Python》一书的作者发布了一条激动人心的消息:他正在写作第二版!
如果要票选最佳的 Python 进阶类书目,这本书肯定会是得票率最高的书籍之一。我在最早写“Python猫荐书系列”时,就想推荐它,但又觉得好东西应该留到最后,所以一直拖到了现在……
如果你读过它,肯定也会认为它值得推荐;如果你没有,那请往下阅读,看我的介绍能否打动你把它列为必读书目吧~
![](https://i-blog.csdnimg.cn/blog_migrate/f89fdb0aa2a65a031d952f5bf8f59083.png)
这本书的英文名是《Fluent Python》,在 2015 年 8 月出版。两年后,国内的图灵教育出品了译本,出版时间是 2017 年 5 月,获得豆瓣 9.4 高分。(图书翻译/出版真是个漫长的过程啊)
作者 Luciano Ramalho 是个巴西人、资深的 Python 程序员/演讲者、PSF(Python软件基金会)成员。书籍的技术审校与推荐人囊括了圈内的一众大咖。
此书一出,大受圈内好评,各国出版社纷纷引进版权,目前至少已有 9 种语言版本(来数数你认识几种?):
![](https://i-blog.csdnimg.cn/blog_migrate/44a30a1d1ef28ecc81ddacf9e5870025.png)
PS:图片出自@fluentpython官推,简体中文版最薄,巧合占据C位。根据图灵教育统计,简体中文版销量超过4万册,预计在2020年能超越英文版的销量。
那么,这本书到底写了些什么呢?又有哪些特别之处呢?
全书内容充实,除去前言、附录和术语表这些内容,共分为六个部分 21 章节。我将核心章节内容制作了一份思维导图:
![](https://i-blog.csdnimg.cn/blog_migrate/a5066764e95a932a3836daf72c6605b2.png)
(在Python猫
公众号回复『流畅』,有完整的高清原图)
以上是主要章节的思维导图,图中的数字是折叠起来的分支数。
下面给大家看看部分的细节图:
![](https://i-blog.csdnimg.cn/blog_migrate/b09a464bde9fb07ab72e2591063bf8e4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/04b5e5bfde2c518ffc2e4c1fd948b4d1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/754692293f6e467eb514ab5dc1f6134d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/862ae187f4c0fb46137aef650cb50c59.png)
原图太大,展示不下。在
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 对象的构造以及语言内部的特性细节,目的是让读者写出更地道、简洁高效、可读易用的代码。
![](https://i-blog.csdnimg.cn/blog_migrate/c0f2349cddd2e178b93b6307e8c24367.png)
《流畅的Python》作者与中文版合影
接着,它介绍了 Python 中一些内置类型的特性(序列类型、映射类型、文本和字节类型),介绍作为特殊对象的函数以及一般性对象的用法,介绍控制流程(迭代器、生成器、上下文管理器、协程和并发编程),最后深入到素有黑魔法之称的元编程(描述符和元类)。
![](https://i-blog.csdnimg.cn/blog_migrate/8a676ce84c8511dbb0a31bbc69cf31a3.png)
全书 600 多页,洋洋洒洒,旁征博引,内容充实到让人应接不暇,让人时不时就产生一种“又学到了新知识”的感觉,以及一种“哦我想进一步学习”的求知欲望。
很多读过书的同学会有一个同感:它的“延伸阅读/杂谈”并不是闲笔,反而有些内容比正文更精彩,作者在此展示了他丰富的知识面(官方文档、社区典故、语法演进、文章视频、开源项目、语言差异等等),每一章都值得挖掘阅读。目前没有任何一本 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 的核心概念,探讨的是基本不会变化的特性,因此倒不必太担忧内容过时,它仍是一本非常推荐购买和阅读参考的书籍。
我非常关心它的第二版,但是也知道,写作需要时间,英文出版、中文翻译和中文出版也都需要时间,所以我们就一起静候佳音吧。
以上是推荐的购买链接~~
最后,还有一个好消息:
1024程序员节
当当计算机图书大促
每满100减50
满200减100
满300减150
……
满400减200的同时,附赠40元的叠加券
相当于160元购买价值400元的硬核技术书
【Python猫】40元专属叠加优惠码:
DQHCZA(有效期10.22-11.3)
使用条件:购书实际支付金额满200,即可享受再减40的优惠。
使用范围:全场当当自营图书
优惠码使用步骤:
步骤一:复制优惠码 DQHCZA
步骤二:长按二维码,直达技术专题,挑选图书到购物车,再点击结算
步骤三:点击“优惠券/码”处,输入优惠码 DQHCZA(注意都要大写哦)