Python好书推荐《Python代码整洁之道》——编写优雅的代码

article/2025/6/13 21:09:59

前言

Python是当今最流行的语言之一。相对较新的领域如数据科学、人工智能、机器人和数据分析,以及传统的专业如Web开发和科学研究等,都在拥抱Python。随着时间的推移,Python有可能会发展成一门基础学科,所以,学好Python是在一些领域生存发展的必备技能。

对于用Python这样的动态语言编写代码的程序员来说,确保代码的高质量和无错误变得越来越重要。作为一名Python开发人员,你希望确保正在构建的软件能够让用户满意,而不会超出预算或无法发布。

目前Python中缺乏的是代码一致性、模式以及开发人员对良好Python代码的理解。对于每个Python程序员,良好的Python代码都有不同的含义。出现这种情况的原因可能是Python被用于如此多的领域,以至于开发人员很难就特定的模式达成一致。

Python是一种简单的语言,但是很难写出好的代码,因为目前可以教我们写出更好的Python代码的资源并不多见。如果你想熟练地编写整洁的Python代码,并可以成功地将这些原则应用到自己的Python项目中,小编为你推荐你阅读 《Python代码整洁之道:编写优雅的代码》 一书。

在这里插入图片描述

在这里插入图片描述
详情请参见

本书的主要目的是为不同级别的Python开发人员提供技巧,以便他们能够编写更好的Python软件和程序。无论你在哪个领域使用Python,本书都可以为你提供各种各样的技巧。本书涵盖了从基础到高级的所有级别的Python知识,并向你展示了如何使代码更符合Python的风格。

请记住,编写软件不仅是一门科学,而且还是一门艺术,本书将教你如何成为一名更好的Python程序员。

精彩抢先看

内容简介

探索使用Python编写代码的正确方法。本书提供了构建无错误和强壮的Python项目所需的技巧和技术。

为了讲授如何编写更好的代码,本书首先介绍理解代码格式化和代码注释的重要性,以及利用内置数据结构和Python字典提高可维护性,使用模块和元类有效地组织代码;

然后深入介绍Python语言的新特性,并教会读者如何有效地使用它们;接下来,将深入介绍一些关键概念,如异步编程、Python数据类型、类型提示和路径处理等,并讲述调试、单元测试和集成测试的技巧,以保证代码可以投入生产;

最后在附录中介绍了一些有助于加快开发速度和提高代码质量的优秀Python工具。

阅读本书之后,你将会熟练地编写整洁的Python代码,并可以成功地将这些原则应用到自己的Python项目中。

通过阅读本书,你将学到以下内容

(1)如何编写整洁的Python代码。

(2)Python的数据结构及特点。

(3)Python中的函数、类和模块(模块在很多书中没有提及或只是简单提及,本书有着较详细的讲解)。

(4)装饰器、生成器、迭代器和上下文管理器的作用和使用场景。

(5)Python 3.x中的一些新特性,如async及协程、类型标注等。

(6)调试和单元测试的一些工具。

作者简介

Sunil Kapil在过去的10年中一直从事软件开发工作,用Python和其他几种语言编写代码,主要涉及Web和移动端服务的软件开发。他开发、部署并维护了被数百万用户喜爱和使用的各种项目,这些项目是与来自不同专业环境的团队合作完成的,涉及世界著名的软件公司。他也是开源的热情倡导者,并持续贡献Zulip Chat和Black等项目。他还与非营利组织合作,并以志愿者的身份为其软件项目做出贡献。

译者介绍

连少华,先后就职于中兴通讯、深交所、金证股份等知名公司和机构,热衷于软件事业,技术栈广泛,涉及C++、C#、Java、Python、Golang等,对架构设计和底层技术有深入的理解和实践,曾经给国外的一些开源库提交过bug并贡献过代码。在CSDN论坛担任过5年多的C++小版的版主和C/C++大版的版主。译有《C++代码整洁之道》,现致力于大数据平台的设计与开发。

目录

●第1章 关于Python的思考1

1.1 编写Python代码1

1.1.1 命名2

1.1.2 代码中的表达式和语句5

1.1.3 拥抱Python编写代码的方式8

1.2 使用文档字符串14

1.2.1 模块级文档字符串17

1.2.2 使类文档字符串具有描述性17

1.2.3 函数文档字符串18

1.2.4 一些有用的文档字符串工具19

1.3 编写Python的控制结构20

1.3.1 使用列表推导20

1.3.2 不要使用复杂的列表推导21

1.3.3 应该使用lambda吗23

1.3.4 何时使用生成器与何时使用列表推导23

1.3.5 为什么不要在循环中使用else24

1.3.6 为什么range函数在Python 3中更好27

1.4 引发异常28

1.4.1 习惯引发异常28

1.4.2 使用finally来处理异常30

1.4.3 创建自己的异常类31

1.4.4 只处理特定的异常32

1.4.5 小心第三方的异常34

1.4.6try最少的代码块35

1.5 小结36

●第2章 数据结构38

2.1 常用数据结构38

2.1.1 使用集合38

2.1.2 返回和访问数据时使用namedtuple40

2.1.3 理解str、Unicode和byte43

2.1.4 谨慎使用列表,优先使用生成器44

2.1.5 使用zip处理列表47

2.1.6 使用Python的内置函数48

2.2 使用字典50

2.2.1 何时使用字典与何时使用其他数据结构51

2.2.2collections51

2.2.3 有序字典、默认字典、普通字典54

2.2.4 使用字典的switch语句55

2.2.5 合并两个字典的方法56

2.2.6 优雅地打印字典57

2.3 小结58

●第3章 编写更好的函数和类59

3.1 函数59

3.1.1 编写小函数60

3.1.2 返回生成器61

3.1.3 引发异常替代返回None63

3.1.4 使用默认参数和关键字参数64

3.1.5 不要显式地返回None66

3.1.6 编写函数时注意防御68

3.1.7 单独使用lambda表达式70

3.2 类72

3.2.1 类的大小72

3.2.2 类结构73

3.2.3 正确地使用@property75

3.2.4 什么时候使用静态方法77

3.2.5 继承抽象类79

3.2.6 使用@classmethod来访问类的状态80

3.2.7 使用公有属性代替私有属性81

3.3 小结83

●第4章 使用模块和元类84

4.1 模块和元类84

4.2 如何使用模块组织代码86

4.3 使用__init__文件88

4.4 以正确的方式从模块导入函数和类90

4.5 何时使用元类92

4.6 使用__new__方法验证子类93

4.7__slots__的用途95

4.8 使用元类改变类的行为98

4.9Python描述符100

4.10 小结102

●第5章 装饰器和上下文管理器104

5.1 装饰器105

5.1.1 装饰器及其作用105

5.1.2 理解装饰器106

5.1.3 使用装饰器更改行为108

5.1.4 同时使用多个装饰器110

5.1.5 使用带参数的装饰器111

5.1.6 考虑使用装饰器库112

5.1.7 用于维护状态和验证参数的类装饰器114

5.2 上下文管理器117

5.2.1 上下文管理器及用途117

5.2.2 理解上下文管理器119

5.2.3 使用contextlib创建上下文管理器120

5.2.4 上下文管理器的示例121

5.3 小结124

●第6章 生成器与迭代器125

6.1 使用生成器和迭代器125

6.1.1 理解迭代器125

6.1.2 什么是生成器128

6.1.3 何时使用迭代器129

6.1.4 使用itertools130

6.1.5 为什么生成器非常有用132

6.1.6 列表推导和迭代器133

6.2 使用yield关键字133

6.2.1yield from135

6.2.2yield相比数据结构更快135

6.3 小结136

●第7章 使用Python的新特性137

7.1 异步编程137

7.1.1Python中的async138

7.1.2asyncio是如何工作的141

7.1.3 异步生成器151

7.2 类型标注159

7.2.1Python中的类型160

7.2.2typing模块160

7.2.3 类型检查会影响性能吗163

7.2.4 类型标注如何帮助编写更好的代码163

7.2.5typing的陷阱163

7.3super()方法164

7.4 类型提示164

7.5 使用pathlib处理路径164

7.6print()现在是一个函数165

7.7f-string165

7.8 关键字参数166

7.9 保持字典数据的顺序166

7.10 迭代解包166

7.11 小结167

●第8章 调试和测试Python代码168

8.1 调试168

8.1.1 调试工具169

8.1.2breakpoint172

8.1.3 在产品代码中使用logging模块替代print172

8.1.4 使用metrics库来分析性能瓶颈177

8.1.5IPython有什么帮助178

8.2 测试179

8.2.1 测试非常重要179

8.2.2Pytest和UnitTest180

8.2.3 属性测试184

8.2.4 生成测试报告184

8.2.5 自动化单元测试185

8.2.6 让代码为生产做好准备186

8.2.7 在Python中执行单元和集成测试186

8.3 小结189

附录 一些很棒的Python工具190


http://chatgpt.dhexx.cn/article/hsIDLriA.shtml

相关文章

读《代码整洁之道》

与《代码大全》类似关注命名,如函数(方法的) 还讨论了,注释,格式,错误处理,边界,单元测试,类,系统,并发编程等 本书讲的编程语言是以 JAVA 为基础…

C++17代码整洁之道

C17代码整洁之道 C代码整洁的基本规范 良好的命名 名称应该自解释使用域中的名称避免使用匈牙利命名法(即名称前加类型)不要通过注释禁用代码 函数 只做一件事情 函数体量要小 当你为函数找到一个富有表现力的名称时,名称中没有连词 圈复杂度低 函数的参数要少 函数尽…

C++代码整洁之道

整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考《C代码整洁之道》和《Google C编码规范》,结合自己的一些想法整理如下: C本身作为面向对象语言,首先介绍下面向对象一般涉及到的开发原…

C++ 代码整洁之道

NOTICE: 这篇文章的框架条目来自《C代码整洁之道:C17可持续软件开发模式实践》,作者: [德] 斯提芬罗特。书籍原名"Clean C: Sustainable Software Development Patterns and Best Practices with C 17"。 NOTICE:未经作者允许禁止转载! 文章目…

SQL中的左连接与右连接,内连接有什么区别

例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) 左连接: select A.,B. from A left outer join B on(A.a1B.a2) 结果是: 右连接: select A.,B. from A right outer join B on(A.a1B.a2) 结果是: 内连接&#xff1a…

sql左连接、右连接结果总结

班级team 表 班级和教师连接表team_teacher – 左连接: – 对于左连接,查询结果中,left左边表格的记录会全部包含 – 再到left右边表格查,如果匹配结果是0或1,对结果总数没影响 – 如果匹配条数大于1,那么结果就增加…

内连接,左连接和右连接作用

在数据库查询中,经常会遇到多表连接来查询数据,下面来说一下他们的连接方法和作用 内连接:内连接是很常用的一个连接方法,用来查询两个表或者多个表之间相同的数据,例如: 查询的是他们之间相同的数据 内…

SQL中的连接(左、右、内连接)

目录 左连接(LEFT JOIN或LEFT OUTER JOIN): 右连接(RIGHT JOIN或RIGHT OUTER JOIN): 内连接(INNER JOIN也叫等值连接): 全连接(FULL JOIN)&…

SQL内连接,左连接,右连接区别及联系

目录 数据库建表及其内容 内连接(默认连接) 左连接 右连接 总结: 数据库建表及其内容 stu表 班级表(class) 内连接(默认连接) SELECT stu.stuname , classname FROM class INNER JOIN stu…

SQL中左连接和右连接的理解误区

SQL中左连接和右连接的理解误区: 1.左右外连接中,怎么区分哪个表当左表,哪个表当右表? 2.什么时候用左连接,什么时候用右连接? 首先,重新捋一遍二者概念: 左连接的语法&#xff…

SQL语句什么是左连接、右连接、内连接?

1、左连接 以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。 左表(table1)全部保留,右表(table2)关联不上用n…

sql的左连接,右连接,内连接

环境: SQL工具(如Navicat,SQLyog) MySQL驱动 全局总结: 左连接:关注左边,右边没有就为空。右连接:关注右边,左边没有就为空。内连接:返回交集 必备: 两张或多张表格 一&#x…

Linux系统之iostat命令的基本使用

Linux系统之iostat命令的基本使用 一、iostat命令介绍二、iostat命令帮助1.1 iostat的帮助信息1.2 iostat的选项解释 三、iostat命令的基本使用3.1 查看iostat工具版本3.2 直接使用iostat命令3.3 间隔5秒查看3次信息3.4 只查看磁盘状态3.5 以k或M为单位显示信息 四、查看磁盘I/…

Linux实时监控iostat命令详解

概述&#xff1a; iostat 主要用于输出CPU和磁盘I/O相关的统计信息。 格式&#xff1a; iostat [选项] [<时间间隔>] [<次数>] 如图 参数&#xff1a; -c 显示CPU使用情况 -d 显示磁盘使用情况 -N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况 -k 以 KB 为单位显…

服务器 iostat命令详解

iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。iostat也有一个弱点&#xff0c;就是它不能对某个进程进行深入分析&#…

Linux中iostat命令参数详解

iostat主要用于监控系统设备的IO负载情况&#xff0c;iostat首次运行时显示自系统启动开始的各项统计信息&#xff0c;之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以根据需求指定相应的次数和时间。 一、使用iostat 1命令&#xff1a; 各参数含义 Device:部…

转:linux iostat命令详解

转过来学习学习。 Linux系统中的 iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出CPU使用情况。同vmstat一样&#xff0c;iostat也有一个…

iostat linux,centos安装iostat命令的方法详解

在centos系统中,可以使用yum命令安装iostat。 开始,想当然地运行命令: 复制代码 代码示例: #yum install iostat 出现如下图所示的提示: 经搜索后,知道使用yum安装iostat,需要安装的其实是sysstat。 例如: 复制代码 代码示例: #yum install sysstat 出现如下图所示的安装…

iostat 命令详解(二)

iostat 命令详解(二) iostat常用命令如下: 1,iostat 2,iostat -xk 1 1 3,iostat -dk 1 1 查看吞吐量 总结:

Linux中iostat含义,linux下iostat命令详解

iostat语法 用法&#xff1a;iostat [ 选项 ] [ [ ]] 常用选项说明&#xff1a; -c&#xff1a;只显示系统CPU统计信息&#xff0c;即单独输出avg-cpu结果&#xff0c;不包括device结果 -d&#xff1a;单独输出Device结果&#xff0c;不包括cpu结果 -k/-m&#xff1a;输出结果以…