《Python编程从新手到高手》
第 一部分 Python环境
第 1章 Python的哲学 ... 2
1.1 到底什么是Python ... 2
1.2 破除误解:Python不是什么 ... 2
1.3 Python 2 vs Python 3 ... 4
1.4 定义“Pythonic”代码 ... 5
1.5 Python之禅 ... 5
1.6 文档、PEP和你 ... 6
1.7 社区中谁说了算? ... 7
1.8 Python社区 ... 7
1.9 对“明显的方式”的追求 ... 8
1.10 本章小结 ... 9
第 2章 Python开发环境 ... 10
2.1 安装Python ... 10
2.2 认识Python解释器 ... 13
2.3 包和虚拟环境 ... 14
2.4 pip介绍 ... 16
2.5 虚拟环境和Git ... 18
2.6 一些额外的关于虚拟环境的小贴士 ... 21
2.7 认识PEP 8 ... 22
2.8 代码质量控制:静态分析工具 ... 23
2.9 代码风格守护者:自动格式化工具 ... 26
2.10 测试框架 ... 27
2.11 代码编辑器一览 ... 27
2.12 本章小结 ... 30
第3章 语法速成课程 ... 31
3.1 “Hello, world!”程序 ... 31
3.2 语句和表达式 ... 31
3.3 空格的重要性 ... 32
3.4 空语句 ... 33
3.5 注释以及文档字符串 ... 33
3.6 声明变量 ... 34
3.7 数学操作 ... 35
3.8 逻辑 ... 38
3.9 字符串 ... 42
3.10 函数 ... 50
3.11 类和对象 ... 50
3.12 异常处理 ... 51
3.13 元组和列表 ... 52
3.14 循环 ... 53
3.15 结构模式匹配 ... 54
3.16 本章小结 ... 57
第4章 项目结构和代码导入 ... 58
4.1 设置代码仓库 ... 58
4.2 模块和包 ... 58
4.3 import是如何工作的 ... 60
4.4 导入操作的注意事项 ... 61
4.5 在项目中使用import ... 65
4.6 入口点 ... 67
4.7 Python模块搜索路径 ... 71
4.8 导入模块时底层发生了什么? ... 71
4.9 本章小结 ... 73
第二部分 基本结构
第5章 变量和数据类型 ... 76
5.1 Python中的变量:名称和值 ... 76
5.2 赋值 ... 76
5.3 数据类型 ... 78
5.4 作用域和垃圾回收 ... 80
5.5 不可变的真相 ... 85
5.6 赋值传递 ... 86
5.7 集合和引用 ... 87
5.8 隐式类型转换和显式类型转换 ... 92
5.9 关于匈牙利命名法的注意事项 ... 93
5.10 术语回顾 ... 94
5.11 本章小结 ... 95
第6章 函数和匿名函数 ... 96
6.1 Python函数基础 ... 98
6.2 递归 ... 99
6.3 默认参数值 ... 100
6.4 关键字参数 ... 102
6.5 重载函数 ... 104
6.6 可变参数 ... 104
6.7 仅关键字参数 ... 106
6.8 嵌套函数 ... 107
6.9 闭包 ... 108
6.10 lambda表达式 ... 111
6.11 装饰器 ... 114
6.12 类型提示及函数注解 ... 116
6.13 本章小结 ... 119
第7章 类和对象 ... 120
7.1 声明一个类 ... 121
7.2 属性 ... 124
7.3 范围命名约定 ... 125
7.4 方法 ... 127
7.5 特性 ... 128
7.6 特殊方法 ... 134
7.7 类装饰器 ... 142
7.8 对象的结构模式匹配 ... 143
7.9 函数式编程和面向对象编程 ... 145
7.10 什么时候使用类? ... 146
7.11 本章小结 ... 147
第8章 错误和异常 ... 148
8.1 Python中的异常 ... 148
8.2 阅读异常信息 ... 150
8.3 捕获异常:LBYL和EAFP ... 151
8.4 多异常处理 ... 152
8.5 当心“尿布反模式” ... 153
8.6 抛出异常 ... 155
8.7 使用异常 ... 157
8.8 else和finally ... 164
8.9 创建异常 ... 168
8.10 异常一览 ... 169
8.11 本章小结 ... 170
第三部分 数据和流程
第9章 集合与迭代 ... 172
9.1 循环 ... 172
9.2 集合 ... 174
9.3 集合的解包 ... 182
9.4 集合的结构模式匹配 ... 185
9.5 以索引或键访问元素 ... 186
9.6 切片符 ... 187
9.7 in运算符 ... 191
9.8 检验集合的长度 ... 192
9.9 迭代 ... 193
9.10 迭代工具 ... 202
9.11 自定义可迭代类 ... 205
9.12 本章小结 ... 209
第 10章 生成器和推导式 ... 210
10.1 惰性求值和贪婪迭代 ... 210
10.2 无限迭代器 ... 211
10.3 生成器 ... 211
10.4 yield from ... 219
10.5 生成器表达式 ... 220
10.6 列表推导式 ... 226
10.7 集合推导式 ... 227
10.8 字典推导式 ... 228
10.9 生成器表达式的隐患 ... 228
10.10 简单协程 ... 231
10.11 异步又如何? ... 234
10.12 本章小结 ... 234
第 11章 文本输入/输出和上下文管理 ... 235
11.1 标准输入和输出 ... 235
11.2 流 ... 240
11.3 上下文管理器基础 ... 241
11.4 文件模式 ... 242
11.5 读取文件 ... 243
11.6 流位置 ... 245
11.7 写入文件 ... 246
11.8 上下文管理器的细节 ... 250
11.9 路径 ... 256
11.10 文件格式 ... 268
11.11 本章小结 ... 273
第 12章 二进制和序列化 ... 274
12.1 二进制表示和位运算 ... 274
12.2 字节字面量 ... 281
12.3 类字节对象 ... 282
12.4 struct模块 ... 286
12.5 类字节对象的位运算 ... 291
12.6 memoryview ... 294
12.7 读写二进制文件 ... 295
12.8 序列化技术 ... 303
12.9 本章小结 ... 307
第四部分 高级概念
第 13章 继承和混入 ... 310
13.1 何时使用继承? ... 312
13.2 Python的基础继承 ... 313
13.3 多继承 ... 315
13.4 混入 ... 324
13.5 本章小结 ... 326
第 14章 元类和抽象基类 ... 327
14.1 元类 ... 327
14.2 用鸭子类型进行类型推导 ... 330
14.3 抽象基类 ... 332
14.4 虚拟子类 ... 338
14.5 本章小结 ... 343
第 15章 自省和泛型 ... 344
15.1 特殊属性 ... 344
15.2 内部对象属性访问:__dict__特殊属性 ... 344
15.3 函数属性 ... 351
15.4 描述符 ... 353
15.5 slots ... 360
15.6 不可变类 ... 362
15.7 单分派泛型函数 ... 365
15.8 使用元素类 ... 367
15.9 任意执行 ... 368
15.10 本章小结 ... 370
第 16章 异步和并发 ... 371
16.1 Python中的异步 ... 372
16.2 示例场景:Collatz游戏同步版本 ... 374
16.3 异步 ... 376
16.4 调度和异步执行流程 ... 381
16.5 异步迭代 ... 383
16.6 异步上下文管理器 ... 385
16.7 异步生成器 ... 385
16.8 其他异步概念 ... 386
16.9 本章小结 ... 386
第 17章 线程和并行 ... 387
17.1 线程 ... 387
17.2 条件竞争 ... 395
17.3 锁 ... 399
17.4 死锁、活锁和饥锁 ... 400
17.5 用队列传递消息 ... 401
17.6 多工作线程的future ... 402
17.7 多进程实现并行 ... 404
17.8 生产者/消费者问题 ... 407
17.9 本章小结 ... 412
第五部分 超越代码
第 18章 打包和分发 ... 416
18.1 规划打包 ... 416
18.2 项目结构:src或src-less ... 419
18.3 用setuptools打包和分发 ... 419
18.4 构建你的包 ... 430
18.5 发布到pip ... 431
18.6 其他打包工具 ... 433
18.7 分发给最终用户 ... 433
18.8 文档 ... 438
18.9 本章小结 ... 439
第 19章 调试和日志 ... 440
19.1 警告 ... 440
19.2 日志记录 ... 444
19.3 断言语句 ... 450
19.4 inspect模块 ... 454
19.5 使用pdb ... 454
19.6 使用faulthandler ... 462
19.7 用Bandit评估程序安全性 ... 463
19.8 向Python开发团队汇报问题 ... 465
19.9 本章小结 ... 466
第 20章 测试和剖析 ... 467
20.1 什么是TDD? ... 467
20.2 测试框架 ... 467
20.3 示例项目 ... 468
20.4 测试和项目结构 ... 469
20.5 基础测试 ... 470
20.6 测试夹具 ... 474
20.7 不稳定测试和有条件忽略测试 ... 478
20.8 高级夹具:模拟和参数化 ... 479
20.9 代码覆盖率 ... 492
20.10 用tox进行自动化测试 ... 494
20.11 基准测试和性能分析 ... 496
20.12 本章小结 ... 501
第 21章 前路迢迢 ... 502
21.1 关于未来 ... 502
21.2 你想出发去哪儿? ... 503
21.3 Python特色 ... 508
21.4 开发Python本身 ... 509
21.5 和Python共同成长 ... 512
21.6 在这条路上一直走下去 ... 515
附录A 特殊方法和属性 ... 516
附录B pdb指令 ... 522
附录C Guido van Rossum的国王节演讲 ... 525
译者后记 ... 529
《Python编程 从入门到实践 第3版》
第 一部分 基础知识
第 1章 起步 2
1.1 编程环境简介 2
1.2 在各种操作系统中搭建Python编程环境 3
1.3 运行Hello World程序 7
1.4 排除安装问题 8
1.5 从终端运行Python程序 9
1.6 小结 11
第 2章 变量和简单的数据类型 12
2.1 运行hello_world.py时发生的情况 12
2.2 变量 12
2.3 字符串 16
2.4 数 22
2.5 注释 25
2.6 Python之禅 26
2.7 小结 27
第3章 列表简介 28
3.1 列表是什么 28
3.2 修改、添加和删除元素 30
3.3 管理列表 37
3.4 使用列表时避免索引错误 40
3.5 小结 41
第4章 操作列表 42
4.1 遍历整个列表 42
4.2 避免缩进错误 45
4.3 创建数值列表 49
4.4 使用列表的一部分 53
4.5 元组 57
4.6 设置代码格式 60
4.7 小结 62
第5章 if语句 63
5.1 一个简单的示例 63
5.2 条件测试 64
5.3 if语句 69
5.4 使用if语句处理列表 76
5.5 设置if语句的格式 79
5.6 小结 80
第6章 字典 81
6.1 一个简单的字典 81
6.2 使用字典 82
6.3 遍历字典 88
6.4 嵌套 94
6.5 小结 100
第7章 用户输入和while循环 101
7.1 input()函数的工作原理 101
7.2 while循环简介 105
7.3 使用while循环处理列表和字典 111
7.4 小结 114
第8章 函数 115
8.1 定义函数 115
8.2 传递实参 117
8.3 返回值 122
8.4 传递列表 127
8.5 传递任意数量的实参 131
8.6 将函数存储在模块中 134
8.7 函数编写指南 137
8.8 小结 139
第9章 类 140
9.1 创建和使用类 140
9.2 使用类和实例 144
9.3 继承 149
9.4 导入类 155
9.5 Python标准库 161
9.6 类的编程风格 162
9.7 小结 163
第 10章 文件和异常 164
10.1 读取文件 164
10.2 写入文件 170
10.3 异常 172
10.4 存储数据 181
10.5 小结 186
第 11章 测试代码 187
11.1 使用pip安装pytest 187
11.2 测试函数 189
11.3 测试类 195
11.4 小结 200
第二部分 项 目
项目1 外星人入侵 202
第 12章 武装飞船 203
12.1 规划项目 203
12.2 安装Pygame 204
12.3 开始游戏项目 204
12.4 添加飞船图像 208
12.5 重构:_check_events()方法和_update_screen()方法 212
12.6 驾驶飞船 214
12.7 简单回顾 221
12.8 射击 222
12.9 小结 228
第 13章 外星人 229
13.1 项目回顾 229
13.2 创建第 一个外星人 230
13.3 创建外星舰队 232
13.4 让外星舰队移动 237
13.5 击落外星人 240
13.6 结束游戏 244
13.7 确定应运行游戏的哪些部分 249
13.8 小结 249
第 14章 记分 250
14.1 添加Play按钮 250
14.2 提高难度 256
14.3 记分 258
14.4 小结 272
项目2 数据可视化 273
第 15章 生成数据 274
15.1 安装Matplotlib 274
15.2 绘制简单的折线图 275
15.3 随机游走 284
15.4 使用Plotly模拟掷骰子 292
15.5 小结 300
第 16章 下载数据 301
16.1 CSV文件格式 301
16.2 制作全球地震散点图:GeoJSON格式 313
16.3 小结 325
第 17章 使用API 326
17.1 使用API 326
17.2 使用Plotly可视化仓库 332
17.3 Hacker News API 338
17.4 小结 341
项目3 Web应用程序 342
第 18章 Django入门 343
18.1 建立项目 343
18.2 创建应用程序 348
18.3 创建网页:学习笔记主页 357
18.4 创建其他网页 361
18.5 小结 369
第 19章 用户账户 370
19.1 让用户能够输入数据 370
19.2 创建用户账户 381
19.3 让用户拥有自己的数据 389
19.4 小结 396
第 20章 设置应用程序的样式并部署 397
20.1 设置项目“学习笔记”的样式 397
20.2 部署“学习笔记” 409
20.3 小结 425
附录A 安装及故障排除 426
附录B 文本编辑器和IDE 430
附录C 寻求帮助 436
附录D 使用Git进行版本控制 440
附录E 部署故障排除 449