Expert Python Programming - Second Edition - Micha Jaworski, Tarek Ziadé

Expert Python Programming - Second Edition

Micha Jaworski, Tarek Ziadé

出版时间

2016-08-04

ISBN

9781785886850

评分

★★★★★
AI导读
核心看点
  • 聚焦Python工程实践,非基础语法教学
  • 深入解析装饰器、生成器与MRO机制
  • 涵盖性能优化、重构及工具链使用
适合谁读
  • 已熟练掌握Python基础的中高级开发者
  • 希望提升代码质量与工程能力的程序员
  • 有性能优化需求的技术人员
读前提醒
  • 不适合初学者,需具备一定编程基础
  • 建议优先阅读英文版,翻译可能晦涩
  • 勿忽略第一章环境配置,避免踩坑
读者共识
  • 内容偏向工程化思考,实战价值高
  • 部分案例复杂,需耐心阅读上下文
  • 部分技术细节可能随版本更新过时

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "……任何新的特性都将在 __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语言进阶书籍。 内容的组织方式更贴近工程化的思考,值得推荐。
直接看的第二版,爽
收藏