知其所以然

比较深入地介绍了 Python 3 的一些进阶功能,优点在于作者经验比较丰富,讲了然也讲了所以然(例如通过 closure 来解释了奇怪的 nonlocal 关键字的存在意义),许多地方会追溯到 Python 语言的设计和进化本身(例如通过 Python Data Model 的设计理念来解释了为什么会有一个全局的 len 函数,而不是定义数组本身的 .length 方法或者属性来取长度),每个章节末尾的细节和故事也都比较有意思,时不时还会和其他语言里的不同设计做一些对比(Javascript 经常被作为反面教材拿出来批评哈哈)。
比较遗憾的是最有意思的一部分讲并行、异步和 coroutine 的内容,由于本书出版于 2015 年,几乎是刚好错过 PEP 492 加入 async/await 关键字的时机,于是还是集中在使用 yield 和 yield from 来实现 coroutine 的方式,感觉这一套旧的方案完全违背了 Python 简单的理念,写出来的代码无比难懂。既然有了新的方式,肯定也就不想再去碰旧的那一套 hacky 的机制了。
© 本文版权归作者 pluskid 所有,任何形式转载请联系作者。
有关键情节透露