最早应该是2015年4月份在「Python-ideas」邮件组知道的《Fluent Python》,当时作者发帖推荐这本书,其中提到了核心开发Victor Stinner做了asyncio部分的评审。那个时候我对asyncio还不太习惯,asyncio的文档也比较匮乏,看到这个消息感觉又多了一个好的帮助我了解Python的途径。

去年双十一的时候从淘宝淘了一本《流畅的Python》,它是台译版的《Fluent Python》。买它的原因是为因为之前看原版过程中有多处理解不清晰,希望通过看台版的书来对比帮助理解。

另外,在豆瓣上《Fluent Python》的评分高达9.6分!那么为什么大家觉得这本书好呢?我今天试着写一篇书评,分如下4部分来介绍这本书:

作者靠谱

看一本书是不是靠谱,首先就是看作者。我认为一本好的技术书籍,首先作者就要是还在第一线,是不是在这个圈子里面。Luciano Ramalho是一个非常知名的Pycon演讲者,同时还是PSF(Python Software Foundation)的研究员。由于他是Django和Zope系的,他有什么贡献我所知甚少。不过我经常能在邮件组看到他参与PEP草案制定和讨论。
另外本书基本每个章节都有对应领域致命的Python核心开发来评审,质量非常有保证。

关键特性剖析到位

目前大量的Python相关的书都倾向基础只是和入门,内容重复,对于中高级开发者意义不大。虽然一般有Python的新书我都会买来翻翻然后咸鱼卖掉,但是越来越容易失望了。

而《Fluent Python》是Python语言图书中的一朵「奇葩」。其他大部分书都是在告诉你「应该这么写,这样用就对了,这样代码性能更高…」,但是没人告诉你为什么?也就是没有从语言设计实现层面给你一些解释,这本书会对这些细节剖析的很到位,还会告诉你一些不踩不能理解的坑儿的成因和解决办法。比如之前我写过一篇 Python元组的赋值谜题 ,就是因为看《Fluent Python》的时候,才从作者哪里获得了肯定的答案。再比如说道slots的时候,不仅通过2个例子对比内存使用量究竟有多大差距,还告诉你使用slots的弊端,需要你注意到的。slots之后我会专门写一篇专栏来介绍的。

技术前瞻和全面

要注意,这是一本在2015年出版的书。那么开始写应该还是在2014年。看看目录,你能发现它是兼顾Python3(主要基于3.4,那会还没有3.5,但是书中却提到了未发布的3.5的一些内容)和Python2(2.7)的。书中大篇幅讲到的concurrent.futures、asyncio到现在看来也是非常前沿的技术。另外对描述符、元类、设计模式、abc、编码问题(貌似很多人对这点都很崩溃,其实是真的没学好-. -)、上下文管理器等高阶内容也都有非常详实的介绍。

包含参考文献和视频链接

可以感受到作者对这些内容非常了解,旁征博引,每章后面都包含了非常多的相关的质量很高的参考文献和视频链接链接,方便读者进一步深入。凡是在网络上找寻各种资源的同学都知道,这是一件费时费力的事情,还得自己去不断地甄别去掉那些质量差的内容,另外有些资源可能真的不好找,也可能是好的内容由于作者并不会去营销变的没有入口,而作者直接把他们列出来了让大家省心省事。
这本书的受众

如果你是一个Python语言的初学者,暂时不要动这本书。如果你之前已经看过几本Python语言相关的书籍,用Python完成过一些项目尤其是能用它来完成日常80%以上的工作时,你就可以看这本书了。

如果你是一个高级的Python开发,还是要做好略微失望的准备。因为他一半以上的内容可能你已经熟悉和了解了。不会有一本书能让初中高三种级别的读者满意,但是这本书还是非常一读的,因为其中有非常多的细节你可能并不了解和熟悉。

举个例子,我之前一直以为类中的属性、特性、方法是不同的3种东西,直到看了本书,我按照自己的理解翻译了下:

属性和方法在Python中被统称为属性(attributes), 方法是一种可被调用的属性。除了属性和方法,也可以建立特性properties,他可以和存取方法(即getter、setter)一起使用来取代属性,这不会改变类的接口,这符合统一存取原则(uniform access principle):

一个模块所提供的所有服务应该是通过一个统一的符号被使用, 其不会泄漏出它们是通过存储还是经过计算而实现的。

PS:其中「uniform access principle」的概念是在《面向对象软件构造》中被提到的。

看完这段是不是有种豁然开朗的感觉呢?

英语好的请直接看原版,如果有同学希望一睹为快,可以抢一下我的这本《流畅的Python》,9成新,100不包邮(原价到手230左右), 微店地址 书买的时候带的封皮,台湾同胞非常贴心. 9成新 。本着对大家负责的态度,有2点我还是先说清楚:

  1. 台湾在表达一些技术名词的时候确实看着不适用,比如「介面」应该是「接口」的意思,所以最好是和英语的一起看,要不然不太好理解。看台版图书和汉语图书还是有区别的,如果你是一个初学者更不要买了,要不然有些地方看台版的也真的不好懂。
  2. 据说图灵有出版这本书的计划,但是目前还完全没有中文译作要出版的消息,遥遥无期,其实我从去年就一直等,后来实在看不到希望才淘宝的,不过希望翻译的比台湾的好点,大家如果不着急可以等出版中文的一部到位。