【经典书】Effective Python: 编写高质量 Python 代码的 59 个有效方法,610页pdf

2020 年 3 月 20 日 专知

地址:

https://effectivepython.com/


本书作者BrettSlatkin以使用场景为主导的精练教学方式,汇聚了59条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。作者根据自己在Google公司多年开发Python基础架构所积累的经验,揭示了Python语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的佳方式,并学会编写易于理解、便于维护且利于改进的代码。


本书可以帮你掌握真正的Pythonic编程方式,令你能够发挥出Python语言的强大功能,并写出健壮而高效的代码。Scott Meyers在畅销书《Effective C++》中开创了一种以使用场景为主导的精练教学方式,本书作者Brett Slatkin就以这种方式汇聚了59条优秀的实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。


Slatkin根据自己在Google公司多年开发Python基础架构所积累的经验,揭示Python语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的方式,并学会编写易于理解、便于维护且利于改进的代码。本书核心内容包括:


● 涵盖Python 3.x及Python 2.x主要应用领域的实用指南,以及与之配套的详细解释及代码范例。

● 与函数相关的编程建议,这些建议有助于我们写出意图清晰、便于复用且缺陷较少的函数。

● 如何准确地表达类与对象的行为。

● 在使用元类和动态属性时,如何避免错误的用法。

● 更为高效的并发及并行方式。

● 与Python内置模块相关的编程技巧和习惯用法。

● 多人协作时所用的开发工具和实践方式。

● 旨在改善代码质量和程序性能的调试、测试与优化方案。



第 1 章 用 Pythonic 方式来思考 1

第 1 条:确认自己所用的 Python 版本 1
第 2 条:遵循 PEP 8 风格指南 3
第 3 条:了解 bytes、 str 与 unicode 的区别 5
        第 4 条:用辅助函数来取代复杂的表达式 8
第 5 条:了解切割序列的办法 10
        第 6 条:在单次切片操作内,不要同时指定 start、 end 和 stride 13
        第 7 条:用列表推导来取代 map 和 f ilter 15
        第 8 条:不要使用含有两个以上表达式的列表推导 16
        第 9 条:用生成器表达式来改写数据量较大的列表推导 18
        第 10 条:尽量用 enumerate 取代 range 20
        第 11 条:用 zip 函数同时遍历两个迭代器 21
        第 12 条:不要在 for 和 while 循环后面写 else 块 23
        第 13 条:合理利用 try/except/else/f inally 结构中的每个代码块 25
第 2 章 函数 28
        第 14 条:尽量用异常来表示特殊情况,而不要返回 None 28
        第 15 条:了解如何在闭包里使用外围作用域中的变量 30
        第 16 条:考虑用生成器来改写直接返回列表的函数 35
        第 17 条:在参数上面迭代时,要多加小心 37
        第 18 条:用数量可变的位置参数减少视觉杂讯 41
        第 19 条:用关键字参数来表达可选的行为 43
        第 20 条:用 None 和文档字符串来描述具有动态默认值的参数 46
        第 21 条:用只能以关键字形式指定的参数来确保代码明晰 49
第 3 章 类与继承 53
        第 22 条:尽量用辅助类来维护程序的状态,而不要用字典和元组 53
        第 23 条:简单的接口应该接受函数,而不是类的实例 58
        第 24 条:以 @classmethod 形式的多态去通用地构建对象 62
        第 25 条:用 super 初始化父类 67
        第 26 条:只在使用 Mix-in 组件制作工具类时进行多重继承 71
        第 27 条:多用 public 属性,少用 private 属性 75
        第 28 条:继承 collections.abc 以实现自定义的容器类型 79
第 4 章 元类及属性 84
        第 29 条:用纯属性取代 get 和 set 方法 84
        第 30 条:考虑用 @property 来代替属性重构 88
        第 31 条:用描述符来改写需要复用的 @property 方法 92
        第 32 条:用 __getattr__、 __getattribute__ 和 __setattr__ 实现按需生成的属性 97
        第 33 条:用元类来验证子类 102
        第 34 条:用元类来注册子类 104
        第 35 条:用元类来注解类的属性 108
第 5 章 并发及并行 112
        第 36 条:用 subprocess 模块来管理子进程 113
        第 37 条:可以用线程来执行阻塞式 I/O,但不要用它做平行计算 117
        第 38 条:在线程中使用 Lock 来防止数据竞争 121XIV
        第 39 条:用 Queue 来协调各线程之间的工作 124
        第 40 条:考虑用协程来并发地运行多个函数 131
        第 41 条:考虑用 concurrent.futures 来实现真正的平行计算 141
第 6 章 内置模块 145
        第 42 条:用 functools.wraps 定义函数修饰器 145
        第 43 条:考虑以 contextlib 和 with 语句来改写可复用的 try/f inally 代码 148
        第 44 条:用 copyreg 实现可靠的 pickle 操作 151
        第 45 条:应该用 datetime 模块来处理本地时间,而不是用 time 模块 157
        第 46 条:使用内置算法与数据结构 161
        第 47 条:在重视精确度的场合,应该使用 decimal 166
        第 48 条:学会安装由 Python 开发者社区所构建的模块 168
第 7 章 协作开发 170
        第 49 条:为每个函数、类和模块编写文档字符串 170
        第 50 条:用包来安排模块,并提供稳固的 API 174
        第 51 条:为自编的模块定义根异常,以便将调用者与 API 相隔离 179
        第 52 条:用适当的方式打破循环依赖关系 182
        第 53 条:用虚拟环境隔离项目,并重建其依赖关系 187
第 8 章 部署 193
        第 54 条:考虑用模块级别的代码来配置不同的部署环境 193
        第 55 条:通过 repr 字符串来输出调试信息 195
        第 56 条:用 unittest 来测试全部代码 198
        第 57 条:考虑用 pdb 实现交互调试 201
        第 58 条:先分析性能,然后再优化 203
        第 59 条:用 tracemalloc 来掌握内存的使用及泄漏情况 208


专知便捷查看

便捷下载,请关注专知公众号(点击上方蓝色专知关注)

  • 后台回复“EP” 就可以获取【经典书】Effective Python: 编写高质量 Python 代码的 59 个有效方法,610页pdf》专知下载链接

专知,专业可信的人工智能知识分发,让认知协作更快更好!欢迎注册登录专知www.zhuanzhi.ai,获取5000+AI主题干货知识资料!
欢迎微信扫一扫加入专知人工智能知识星球群,获取最新AI专业干货知识教程资料和与专家交流咨询
点击“ 阅读原文 ”,了解使用 专知 ,查看获取5000+AI主题知识资源
登录查看更多
0

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
190+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
165+阅读 · 2020年3月27日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
189+阅读 · 2020年3月12日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
这可能是学习Python最好的免费在线电子书
程序猿
51+阅读 · 2018年5月17日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
2017年度图灵最受欢迎Python图书TOP10
图灵教育
5+阅读 · 2017年12月22日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
A Survey on Deep Learning for Named Entity Recognition
Arxiv
72+阅读 · 2018年12月22日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Learning to Importance Sample in Primary Sample Space
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
9+阅读 · 2018年3月28日
Arxiv
3+阅读 · 2018年3月27日
VIP会员
相关资讯
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
这可能是学习Python最好的免费在线电子书
程序猿
51+阅读 · 2018年5月17日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
教你用Python进行自然语言处理(附代码)
数据派THU
6+阅读 · 2018年3月28日
2017年度图灵最受欢迎Python图书TOP10
图灵教育
5+阅读 · 2017年12月22日
手把手教TensorFlow(附代码)
深度学习世界
15+阅读 · 2017年10月17日
Python 书单:从入门到……
Linux中国
38+阅读 · 2017年8月6日
相关论文
Scale-Aware Trident Networks for Object Detection
Arxiv
4+阅读 · 2019年1月7日
A Survey on Deep Learning for Named Entity Recognition
Arxiv
72+阅读 · 2018年12月22日
Deep Learning for Generic Object Detection: A Survey
Arxiv
13+阅读 · 2018年9月6日
Learning to Importance Sample in Primary Sample Space
Efficient and Effective $L_0$ Feature Selection
Arxiv
5+阅读 · 2018年8月7日
Arxiv
9+阅读 · 2018年3月28日
Arxiv
3+阅读 · 2018年3月27日
Top
微信扫码咨询专知VIP会员