Effective Python:编写高质量Python代码的90个有效方法(原书第2版)
基本信息
- 作者: [美]布雷特·斯拉特金(Brett Slatkin)
- 丛书名: Effective系列丛书
- 出版社:机械工业出版社
- ISBN:9787111674023
- 上架时间:2021-1-19
- 出版日期:2021 年1月
- 开本:16开
- 页码:388
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python

【插图】

编辑推荐
●本书可以帮你掌握真正的Pythonic编程方式,令你能够完全发挥出Python语言的强大功能,并写出健壮而高效的代码。Scott Meyers在畅销书Effective C++中开创了一种以使用场景为主导的精练教学方式,本书作者Brett Slatkin就以这种方式汇聚了90条实践原则、开发技巧和便捷方案,并以实用的代码范例来解释它们。
●Slatkin根据自己在Google公司多年开发Python基础架构所积累的经验,揭示Python语言中一些鲜为人知的微妙特性,并给出了能够改善代码功能及运行效率的习惯用法。通过本书,你能够了解到解决关键编程任务所用的奇妙方式,并学会编写易于理解、便于维护且利于改进的代码。
内容简介
计算机书籍
本书能够帮你掌握真正的 Pythonic 编程方式,充分发挥 Python 的优势,写出健壮而高效的代码。Scott Meyers在其名著Effective C++中开创了一种用简明的场景实例来讲述编程经验的方式,本书作者Brett Slatkin也沿用这种方式,向大家讲解 Python 的编程原则、开发技巧与便捷方案,形成 90 条建议并配有实用的范例代码,以便大家能够扎实地掌握 Python 语言。
【本书的关键内容包括】:
● 31 条新的实用建议,这些建议涵盖 Python 开发的几个主要方面。
● 对各种语句、表达式与内置类型做了详细讲解与演示。
● 怎样写出意图清晰、便于复用而且不容易出现 bug 的函数。
● 怎样更好地使用推导机制与生成器函数。
● 怎样用类与接口准确展示相关的行为。
● 怎样避开元类与动态属性中的一些陷阱。
● 怎样用更高效且更清晰的方法写出并发与并行程序。
● 怎样优化程序性能并提升代码质量。
● 用于改进调试与测试工作的技术与内置模块。
● 与协作开发有关的工具和经验。
作译者
目录
译者序
前言
致谢
第1章 培养Pythonic思维 1
第1条 查询自己使用的Python版本 1
第2条 遵循PEP 8风格指南 2
第3条 了解bytes与str的区别 5
第4条 用支持插值的f-string取代C风格的格式字符串与str.format方法 9
第5条 用辅助函数取代复杂的表达式 19
第6条 把数据结构直接拆分到多个变量里,不要专门通过下标访问 21
第7条 尽量用enumerate取代range 25
第8条 用zip函数同时遍历两个迭代器 26
第9条 不要在for与while循环后面写else块 28
第10条 用赋值表达式减少重复代码 31
第2章 列表与字典 37
第11条 学会对序列做切片 37
第12条 不要在切片里同时指定起止下标与步进 40
第13条 通过带星号的unpacking操作来捕获多个元素,不要用切片 42
第14条 用sort方法的key参数来表示复杂的排序逻辑 45
前言
本书会详细地告诉大家如何采用符合Python风格的方式(Pythonic方式)来编写程序,这是使用Python语言的最佳方式。笔者假设你对这门语言已经有了初步了解。编程新手可以通过这本书学到各种Python功能的最佳用法,有经验的程序员则能够学会如何自信地运用Python中的新工具。
笔者的目标是让大家用Python开发出优秀的软件。
本书涵盖的内容
本书每一章都包含许多相互关联的条目。大家可以按照自己的需要随意阅读这些条目。每个条目都包含简洁而明确的教程,告诉你如何才能更有效率地编写Python程序。笔者在每个条目里都给出了建议,告诉大家哪些应该做,哪些应该避免,以及怎样在各种做法之间求得平衡,并且会解释笔者所选的做法好在哪里。笔者可能会在某个条目中提到其他一些条目,让大家可以全面地了解这些建议所涉及的知识。
本书第2版只针对Python 3(参见第1条),这里说的Python 3包含从3.0到3.8的各个版本。本书第1版中的许多条目仍然收录在第2版中,并且做了修订,其中有些条目改动比较大。随着Python语言越来越成熟,最佳编程方法也在演变,所以笔者在第2版中对某些问题的建议,可能与第1版的完全不同。Python 2已经在2020年1月1日退场,如果你还是主要在用这个版本来编程,那么第1版中的建议或许比第2版中的建议更加合适。
Python采用“自带电池”(batteries included)的理念来设计标准库,不像其他语言那样只提供少数几个常用的软件包,如果需要的重要功能不在这些软件包里,那就要自己去寻找了。许多Python内置软件包与Python的习惯用法有着密切的关系,所以实际上已经成了语言规范的一部分。本书篇幅有限,不可能把所有的标准模块全都讲一遍,但会涵盖其中那些需要了解和使用且用法比较关键的模块。
第1章:培养 Pythonic 思维
Python开发者社区用Pythonic这个形容词来描述具有某种特定风格的代码。这种风格是大家在使用Python语言编程并相互协作的过程中逐渐形成的。本章讲解如何采用这样的风格编写常见的Python代码。
第2章:列表与字典
在Python语言中整理信息时,最常用的方法是把一系列数值保存到列表(list)中。既然有列表,那就有另外一种跟它互补的结构,也就是字典(dict),这种结构可以把它存储的查找键映射到对应的值上。本章讲解如何采用这些数据结构来编写程序。
第3章:函数
Python中的函数具备多种特性,这有助于简化编程工作。Python函数的某些性质与其他编程语言中函数的类似,但也有一些是Python独有的。本章介绍如何使用函数来表达开发者的意图,如何让代码更容易复用,以及如何减少bug。
第4章:推导与生成
Python有一种特殊的语法,可以迅速迭代列表(list)、字典(dict)与集合(set),并据此生成相应的数据结构,这让我们能够在函数返回的这种结构上逐个访问根据原结构所派生出来的一系列值。本章讲解怎样利用这种机制来提升程序效率并降低内存用量,同时让代码变得更容易读懂。
第5章:类与接口
Python是面向对象的语言。用Python编程时,经常要编写新的类,而且还要定义这些类应该如何通过其接口以及继承体系与其他代码相交互。本章讲解怎样使用类来表达对象所应具备的行为。
第 6 章:元类与属性
元类(metaclass)与动态属性(dynamic attribute)都是很强大的Python特性,但它们也有可能会让程序出现古怪的行为与意外的效果。本章讲解这些机制的习惯用法,确保读者写出来的代码遵循最小惊讶原则(rule of least surprise)。
第7章:并发与并行
媒体评论
—Wes McKinney,Python Pandas项目创始人,Ursa Labs的主管
●“如果你是从其他语言转到Python的,那就把这本书当成权威指南来看吧!它会教你怎样充分利用Python的各种特性。我用Python已经快20年了,但还是能够从这本书里发现很多有用的技巧,尤其是与Python 3的新特性有关的技巧。本书中的建议都很实用,可以帮助我们判断什么样的代码才是Python风格的代码。”
—Simon Willison,Django联合创始人
●“我用Python写了很多年程序,认为自己已经很了解这门语言了,但是看过这本书中的各项技巧之后,我才发现自己写的代码仍然有很多地方可以改进。比如可以通过二分法在有序的列表中搜索,让程序跑得更快;可以采用只能通过关键字形式来指定的参数把代码写得更加清晰易读;可以通过星号表达式来拆分序列,减少出错率;可以通过zip并行迭代多个列表,让代码更具Python风格。第2版还有个好处,就是它能让我很快掌握Python 3的新特性,例如walrus操作符、f-string、typing模块等。”
—Pamela Fox,可汗学院编程课创始人
●“Python 3终于成了Python的标准版本,它其实已经做了8次小的修订,其中添加了许多新特性。Brett Slatkin这次带来的Effective Python第2版,讲解了大量新的Python编程习惯,并且给出了很多条明晰的建议,这些内容考虑到了从Python 3.0到Python 3.8之间的各个版本,至于Python 2,现在可以让它歇一歇了。本书前面几章介绍了Python 3的许多新语法和新概念,比如string对象、byte对象、f-string、赋值表达式(assignment expression,作者会提到关于这种表达式的几个你不一定知道的特殊叫法),以及如何把tuple中的其他元素全都捕获下来。后面几章谈的主题比较大,其中有些内容我原来没听说过,还有一些我虽然听说过,但总找不到特别好的办法给别人讲解。比如第6章,其中有一条建议很棒,那就是第51条。另外,作者还介绍了一个奇妙的方法,叫作__init_subclass__(),我原来不太熟悉。在介绍并发与并行的章节中,第53条建议讲得很好,当然作者还讲了asyncio(异步I/O)与coroutine(协程)的问题,而且讲得很对。另外就是谈稳定与性能的那一章,其中第70条建议值得注意。总之,每一部分都写得很棒,作者把这些实践技巧讲解得相当清晰,以后我打算引用书里的一些内容,因为这些建议实在是很有道理。如果今年只读一本Python书的话,那肯定该选这一本。”
—Mike Bayer,SQLAlchemy创始人
●“刚学编程的人和有经验的开发者都非常适合看这本书。书中的范例代码写得很周详,作者解释得也相当精准、透彻。第2版更新了与Python 3有关的建议,这实在是太好了。我已经用Python近20年了,但还是每看几页就能发现一些新的知识。书中给出的建议,我想每个人都应该听取。”
—Titus Brown,加州大学戴维斯分校副教授
●“与上一版一样,Brett Slatkin依然很好地将整个Python开发界的各种经验,全都浓缩到了一本书中。他既谈了元类与并发这样的高端主题,也没有忘记稳定性、测试与协作开发等重要基础知识。本书新版用大家都能接受的观点,讲述了什么叫作Python式的编程风格。”
—Brandon Rhodes,python-patterns.guide的作者