Expert Python Programming - Second Edition

Micha Jaworski, Tarek Ziadé

出版时间

2016-08-04

ISBN

9781785886850

评分

★★★★★
书籍介绍
这不本教你写 Python 语法入门的书,而是把目光投向中级开发者日常真正卡手的工程难题:如何组织代码、如何取舍设计、如何让程序在规模增长后仍不易散架。书中大量篇幅讨论装饰器、生成器、元类等机制背后的工程权衡,而非语法本身。多位读者指出,它的价值不在速成,而在'工程化的思考方式'——从书的中后段开始,才逐渐显出'专家'二字的分量。需要提醒的是,书中部分示例被指略显陈旧,翻译亦有可议之处,因此它更适合有一定基础、愿意边读边动手验证的读者,作为实践参考的起点,而非一劳永逸的权威指南。
AI导读
核心看点
  • 聚焦Python工程实践,非基础语法教学
  • 深入解析装饰器、生成器与MRO机制
  • 涵盖性能优化、重构及工具链使用
读者共识
  • 内容偏向工程化思考,实战价值高
  • 部分案例复杂,需耐心阅读上下文
  • 部分技术细节可能随版本更新过时
精彩摘录
  • "……任何新的特性都将在 __dict__ 中被添加,所以这无法在派生类上工作。"
  • "This won't work on the derived class since any new attribute will be added in __dict__."
  • "因为装饰器在模块第一次被读入是由解释程序装入,所以它们的使用必须受限于总体上可以应用的封装器。"
  • "Since decorators are loaded by the interpreter when the module is first read, their usage should be limited to wrappers that can be generically applied."
  • "Python 为编写针对序列的简单生成器提供了一种快捷方式。可以用一种类似列表推导的语法来代替 yield。(即使用圆括号代替中括号)"
  • "为子函数应用一个诸如 _mydecorator 之类的明确名称,而不是像 wrapper 这样的通用名称是一个好习惯,因为明确的名称更方便在错误发生的时候回溯 —— 可以知道正在处理指定的装饰器"
  • "新的 MRO 是基于一个基类上的递归调用。... 将 C3 符号应用到示例中,如下所示。 L[MyClass(Base1, Base2)] = MyClass + merge(L[Base1], L[Base2], Base1, Base2) L[MyClass] 是 MyClass 类的线性化,而 merge 是合并多个线性化结果的具体算法。 ... C 的线性化是 C 加上父类的线性化和父类列表的合并的总和。"
  • "应该避免多重继承 super 的使用必须一致 不要混用老式和新式的类 调用父类时必须检查类层次"
用户评论
蛮不错的,每一节的 implementation details 都有含金量。
真的是专家写的书,中级进阶书,很多语法层面的没出现在书里,更加强调的是工程层面的问题,很不错。
偏向工程实践方面
从中间到后面是精髓,的确更适用expert而不是learner/beginner的阶段。
算是不错的工程方面的参考起点,侧重于工具与实践的介绍,部分内容略为陈旧。
不错的Python语言进阶书籍。 内容的组织方式更贴近工程化的思考,值得推荐。
直接看的第二版,爽
下载
收藏