今年二月初,我看到一条微博:《流畅的Python》的作者有一个激动人心的消息:他正在写第二版!如果你要投票选出最好的Python高级书籍,这本书绝对是票数最高的书籍之一。刚开始写《蟒猫推荐书系列》的时候,就想推荐一下,但是觉得好东西要留到最后,所以一直拖到现在……如果你读过,你就会绝对认为值得推荐;如果你还没有,请继续往下看,看看我的介绍能不能说服你把它列为必读书单~这本书的英文名是《Fluent Python》,2015年8月出版,两年后,中国图灵教育出品译本,2017年5月出版,在豆瓣获得9.4的高分。(书籍翻译/出版是一个漫长的过程)作者LucianoRamalho是巴西人,经验丰富的Python程序员/演讲者,PSF(Python软件基金会)成员。书籍的技术审稿人和推荐人不乏圈内大咖。这本书一问世就受到圈内好评,各国出版社纷纷引进版权。目前至少有9个语言版本(快来数一数你知道多少?):PS:图片来自@fluentpython官方推送,简体中文版最好Thin,恰好占据了C位。据图灵教育统计,简体中文版销量超过4万册,预计2020年将超过英文版销量。那么,这本书讲的是什么?有什么特别之处?全书内容充实,除前言、附录和辞典外,共分六部分21章。我做了核心章节的思维导图:(蟒猫公众号回复“顺利”,附完整高清原图)以上是主要章节的思维导图,图中数字为折枝数字。给大家看一些细节图:原图太大,显示不出来。在Python猫公众号回复“顺利”,有完整的高清原图,PDF版和MarkDown版。从章节可以看出,本书主要面向中高级开发者。基本不涉及入门级内容,而是侧重于数据模型、数据结构、函数对象、面向对象、控制流、元编程等主题。打开本书的第一章,作者用几行Python代码手工实现了一副扑克牌:importcollectionsCard=collections.namedtuple('Card',['rank','suit'])classFrenchDeck:ranks=[str(n)forninrange(2,11)]+list('JQKA')suits='黑桃方块红心'.split()def__init__(self):self._cards=[Card(rank,suit)forsuitinself.suitsforrankinself.ranks]def__len__(self):returnlen(self._cards)def__getitem__(self,position):returnself._cards[position]然后,点出整个本书最关注的核心话题:各种特殊方法组成的数据模型。特殊方法(specialmethod)为__xxx__(),以双下划线命名,通常称为magicmethod和dundermethod。这是Python的独特设计。数据模型(datamodel)无疑是Python语言的关键核心,是所谓pythonic风格的基石。Python中万物皆对象,数据模型就是这些对象的接口规范。正是因为它,Python才能获得极强的行为一致性。《流畅的Python》从数据模型出发,定下全文的风格基调,即关注Python对象的结构和语言内部特征的细节,目的是让读者写出更多真实、简洁、高效、可读且易于使用的代码。《流畅的Python》作者与中文版合影接下来介绍Python中一些内置类型(序列类型、映射类型、文本和字节类型)的特点,介绍作为特殊对象的函数和一般对象的用法,并介绍了控制流(迭代器、生成器、上下文管理器、协程和并发编程),最后深入元编程(描述符和元类),被称为黑魔法。全书长达600多页,参考资料齐全,内容丰富到让人无法自拔。人们时不时会有一种“学到新知识”的感觉,一种“哦,我想多了解xxx”的求知欲。很多读过该书的同学都会有同感:它的“延伸阅读/杂谈”并不是空写,而是有些内容比正文更精彩。作者在这里展示了丰富的知识(官方文档、社区典故、语法演进、文章视频、开源项目、语言差异等),每一章都值得挖掘和阅读。在这方面,没有其他Python书籍可以与之匹敌。我建议您找到您感兴趣的章节并阅读它们。另外,有人做了很好的读书笔记(挺长的),我放在这里:http://www.hongweipeng.com/index.php/archives/1345(byhongweipeng)http://frankorz.com/2017/07/01/fluent-python-note(作者毛东)《流畅的Python》第一版基于当时最新的Python3.4。这些年来,Python不断丰富自己,不仅正式宣布结束Python2版本,而且迅速进化到最新的3.9版本。不过,由于作者着眼于Python的核心概念并讨论不会改变的特性,因此不必过分担心内容过时。仍然是一本强烈推荐购买和参考的书。我很关注它的第二版,但我也知道写作需要时间,英文出版、中文翻译和中文出版也需要时间,让我们一起等待好消息吧。
