1 Python 基础 .................................................................................. 15
1.1 运行 Python .............................................................................................................. 15
1.2 Python 程序 .............................................................................................................. 16
1.3 基本类型、变量与表达式 ...................................................................................... 17
1.4 算术运算符 .............................................................................................................. 19
1.5 条件与控制流 .......................................................................................................... 21
1.6 文本串 ...................................................................................................................... 23
1.7 文件输入与输出 ...................................................................................................... 26
1.8 列表 .......................................................................................................................... 27
1.9 元组 .......................................................................................................................... 29
1.10 Sets ......................................................................................................................... 31
1.11 字典 ........................................................................................................................ 32
1.12 迭代与循环 ............................................................................................................ 35
1.13 函数 ........................................................................................................................ 36
1.14 异常 ........................................................................................................................ 38
1.15 程序终止 ................................................................................................................ 40
1.16 对象和类 ................................................................................................................ 40
1.17 模块 ........................................................................................................................ 44
1.18 脚本编写 ................................................................................................................ 46
1.19 包 ............................................................................................................................ 47
1.20 构建应用程序 ........................................................................................................ 48
1.21 第三方包管理 ........................................................................................................ 49
1.22 Python 让人感到舒适 ............................................................................................ 50
2 运算符、表达式和数据操作 ................................................................. 51
2.1 字面量 ...................................................................................................................... 51
2.2 表达式与地址 .......................................................................................................... 52
2.3 标准运算符 .............................................................................................................. 53
2.4 就地赋值 .................................................................................................................. 55
2.5 对象比较 .................................................................................................................. 56
2.6 有序比较运算符 ...................................................................................................... 56
2.7 布尔表达式及真值 .................................................................................................. 57
2.8 条件表达式 .............................................................................................................. 58
2.9 迭代操作 .................................................................................................................. 59
2.10 序列操作 ................................................................................................................ 61
2.11 可变序列操作 ........................................................................................................ 63
2.12 Set 操作 .................................................................................................................. 64
2.13 映射操作 ................................................................................................................ 65
2.14 列表、Set 与字典解析式 ...................................................................................... 66
2.15 生成器表达式 ........................................................................................................ 68
2.16 特性(.)运算符 ................................................................................................... 70
2.17 函数调用()运算符 ................................................................................................. 70
2.18 求值顺序 ................................................................................................................ 70
2.19 最后的话:数据的秘密 ........................................................................................ 72
3 程序结构与控制流 ............................................................................ 73
3.1 程序结构与执行 ...................................................................................................... 73
3.2 条件执行 .................................................................................................................. 73
3.3 循环与迭代 .............................................................................................................. 74
3.4 异常 .......................................................................................................................... 78
3.4.1 异常层次 ..................................................................................................... 81
3.4.2 异常与控制流 ............................................................................................. 82
3.4.3 定义新异常 ................................................................................................. 83
3.4.4 链式异常 ..................................................................................................... 84
3.4.5 异常回溯 ..................................................................................................... 87
3.4.6 异常处理建议 ............................................................................................. 87
3.5 上下文管理器和 with 语句 ..................................................................................... 89
3.6 断言和__debug__ .................................................................................................... 91
3.7 最后的话 .................................................................................................................. 92
4 对象、类型和协议 ............................................................................ 93
4.1 核心概念 .................................................................................................................. 93
4.2 对象标识与类型 ...................................................................................................... 94
4.3 引用计数与垃圾回收 .............................................................................................. 95
4.4 引用与复制 .............................................................................................................. 97
4.5 对象的表示与打印 .................................................................................................. 98
4.6 头等对象 .................................................................................................................. 99
4.7 对可选的或缺失的数据使用 None ....................................................................... 101
4.8 对象协议及数据抽象 ............................................................................................ 101
4.9 对象协议 ................................................................................................................ 103
4.10 数字协议 .............................................................................................................. 104
4.11 比较协议 .............................................................................................................. 106
4.12 转换协议 .............................................................................................................. 108
4.13 容器协议 .............................................................................................................. 109
4.14 迭代协议 .............................................................................................................. 111
4.15 特性协议 .............................................................................................................. 112
4.16 函数协议 .............................................................................................................. 112
4.17 上下文管理器协议 .............................................................................................. 113
4.18 最后的话:关于 Pythonic ................................................................................... 113
5 函数 ........................................................................................... 115
5.1 函数定义 ................................................................................................................ 115
5.2 缺省参数 ................................................................................................................ 115
5.3 可变参数 ................................................................................................................ 116
5.4 关键字参数 ............................................................................................................ 117
5.5 可变关键字参数 .................................................................................................... 118
5.6 接受所有输入的函数 ............................................................................................ 118
5.7 位置限定(Positional-Only)参数 ....................................................................... 119
5.8 名称、文档字符串和类型提示 ............................................................................ 120
5.9 函数应用及参数传递 ............................................................................................ 121
5.10 返回值 .................................................................................................................. 123
5.11 错误处理 .............................................................................................................. 124
5.12 作用域规则 .......................................................................................................... 125
5.13 递归 ...................................................................................................................... 128
5.14 lambda 表达式 ..................................................................................................... 128
5.15 高阶函数 .............................................................................................................. 129
5.16 回调函数中的参数传递 ...................................................................................... 132
5.17 从回调函数返回结果 .......................................................................................... 135
5.18 装饰器 .................................................................................................................. 138
5.19 map、filter 和 reduce ........................................................................................... 141
5.20 函数自省、特性和签名 ...................................................................................... 143
5.21 环境检查 .............................................................................................................. 145
5.22 动态代码的执行和创建 ...................................................................................... 147
5.23 异步函数和 await ................................................................................................ 149
5.24 最后的话:函数与组合的思考 .......................................................................... 151
6 生成器 ........................................................................................ 153
6.1 生成器与 yield ....................................................................................................... 153
6.2 可重新启动的生成器 ............................................................................................ 156
6.3 生成器委托 ............................................................................................................ 156
6.4 生成器实践 ............................................................................................................ 158
6.5 增强型生成器和 yield 表达式 .............................................................................. 160
6.6 增强型生成器的应用 ............................................................................................ 162
6.7 生成器与 await 的联系 ......................................................................................... 165
6.8 最后的话:生成器简史及展望 ............................................................................ 166
7 类和面向对象编程 .......................................................................... 167
7.1 对象 ........................................................................................................................ 167
7.2 class 语句 ............................................................................................................... 168
7.3 实例 ........................................................................................................................ 169
7.4 特性访问 ................................................................................................................ 170
7.5 作用域规则 ............................................................................................................ 172
7.6 运算符重载及协议 ................................................................................................ 173
7.7 继承 ........................................................................................................................ 174
7.8 通过组合避免继承 ................................................................................................ 177
7.9 通过函数避免继承 ................................................................................................ 180
7.10 动态绑定和鸭子类型 .......................................................................................... 181
7.11 继承内置类型的危险性 ...................................................................................... 181
7.12 类变量和方法 ...................................................................................................... 183
7.13 静态方法 .............................................................................................................. 187
7.14 略谈设计模式 ...................................................................................................... 190
7.15 数据封装和私有特性 .......................................................................................... 190
7.16 类型提示 .............................................................................................................. 193
7.17 属性 ...................................................................................................................... 194
7.18 类型、接口和抽象基类 ...................................................................................... 197
7.19 多重继承、接口和 mixin .................................................................................... 201
7.20 基于类型的分派 .................................................................................................. 207
7.21 类装饰器 .............................................................................................................. 208
7.22 有监督的继承 ...................................................................................................... 211
7.23 对象生命周期与内存管理 .................................................................................. 213
7.24 弱引用 .................................................................................................................. 218
7.25 内部对象表示和特性绑定 .................................................................................. 220
7.26 代理、包装器和委托 .......................................................................................... 222
7.27 使用__slots__减少内存 ....................................................................................... 224
7.28 描述符 .................................................................................................................. 225
7.29 类定义过程 .......................................................................................................... 229
7.30 动态创建类 .......................................................................................................... 230
7.31 元类 ...................................................................................................................... 231
7.32 用于实例和类的内置对象 .................................................................................. 236
7.33 最后的话:保持简单 .......................................................................................... 237
8 模块和包 ..................................................................................... 239
8.1 模块和 import 语句 ............................................................................................... 239
8.2 模块缓存 ................................................................................................................ 241
8.3 从模块导入选定名称 ............................................................................................ 242
8.4 循环导入 ................................................................................................................ 244
8.5 模块的重新加载与卸载 ........................................................................................ 246
8.6 模块编译 ................................................................................................................ 247
8.7 模块搜索路径 ........................................................................................................ 248
8.8 作为主程序执行 .................................................................................................... 248
8.9 包 ............................................................................................................................ 249
8.10 包内导入 .............................................................................................................. 251
8.11 以脚本方式运行包的子模块 .............................................................................. 252
8.12 控制包命名空间 .................................................................................................. 253
8.13 控制包的导出 ...................................................................................................... 254
8.14 包数据 .................................................................................................................. 255
8.15 模块对象 .............................................................................................................. 256
8.16 部署 Python 包 ..................................................................................................... 257
8.17 倒数第二句话:从一个包开始 .......................................................................... 258
8.18 最后的话:保持简单 .......................................................................................... 259
9 输入与输出 .................................................................................. 261
9.1 数据表示 ................................................................................................................ 261
9.2 文本编码和解码 .................................................................................................... 262
9.3 文本和字节格式化 ................................................................................................ 264
9.4 读取命令行选项 .................................................................................................... 268
9.5 环境变量 ................................................................................................................ 270
9.6 文件和文件对象 .................................................................................................... 270
9.6.1 文件名称 ................................................................................................... 271
9.6.2 文件模式 ................................................................................................... 272
9.6.3 I/O 缓冲 ..................................................................................................... 272
9.6.4 文本模式编码 ........................................................................................... 273
9.6.5 文本模式行处理 ....................................................................................... 274
9.7 I/O 抽象层 .............................................................................................................. 274
9.8 标准输入、输出和错误 ........................................................................................ 277
9.9 目录 ........................................................................................................................ 278
9.10 print()函数 ............................................................................................................ 279
9.11 生成输出 .............................................................................................................. 279
9.12 消费输入 .............................................................................................................. 280
9.13 对象序列化 .......................................................................................................... 282
9.14 阻塞操作和并发 .................................................................................................. 283
9.14.1 非阻塞 I/O ............................................................................................... 284
9.14.2 I/O 轮询 ................................................................................................... 285
9.14.3 线程 ......................................................................................................... 285
9.14.4 使用 asyncio 并发执行 ........................................................................... 286
9.15 标准库模块 .......................................................................................................... 287
9.15.1 asyncio 模块 ............................................................................................ 287
9.15.2 binascii 模块 ............................................................................................ 288
9.15.3 cgi 模块 ................................................................................................... 289
9.15.4 configparser 模块 .................................................................................... 290
9.15.5 csv 模块 ................................................................................................... 290
9.15.6 errno 模块 ................................................................................................ 291
9.15.7 fcntl 模块 ................................................................................................. 292
9.15.8 hashlib 模块 ............................................................................................. 292
9.15.9 http 包 ...................................................................................................... 293
9.15.10 io 模块 ................................................................................................... 293
9.15.11 json 模块 ................................................................................................ 294
9.15.12 logging 模块 .......................................................................................... 294
9.15.13 os 模块................................................................................................... 295
9.15.14 os.path 模块 ........................................................................................... 295
9.15.15 pathlib 模块 ........................................................................................... 296
9.15.16 re 模块 ................................................................................................... 297
9.15.17 shutil 模块 ............................................................................................. 298
9.15.18 select 模块 ............................................................................................. 298
9.15.19 smtplib 模块 .......................................................................................... 299
9.15.20 socket 模块 ............................................................................................ 300
9.15.21 struct 模块 ............................................................................................. 302
9.15.22 subprocess 模块 ..................................................................................... 302
9.15.23 tempfile 模块 ......................................................................................... 303
9.15.24 textwrap 模块 ........................................................................................ 304
9.15.25 threading 模块 ....................................................................................... 305
9.15.26 time 模块 ............................................................................................... 307
9.15.27 urllib 包 ................................................................................................. 307
9.15.28 unicodedata 模块 ................................................................................... 308
9.15.29 xml 包 .................................................................................................... 309
9.16 最后的话 .............................................................................................................. 310
10 内置函数和标准库 ........................................................................ 311
10.1 内置函数 .............................................................................................................. 311
10.2 内置异常 .............................................................................................................. 328
10.2.1 异常基类 ................................................................................................. 328
10.2.2 异常特性 ................................................................................................. 328
10.2.3 预定义异常类 ......................................................................................... 329
10.3 标准库 .................................................................................................................. 332
10.3.1 collections 模块 ....................................................................................... 332
10.3.2 datetime 模块 .......................................................................................... 332
10.3.3 itertools 模块 ........................................................................................... 332
10.3.4 inspect 模块 ............................................................................................. 332
10.3.5 math 模块 ................................................................................................ 332
10.3.6 os 模块 .................................................................................................... 333
10.3.7 random 模块 ............................................................................................ 333
10.3.8 re 模块 ..................................................................................................... 333
10.3.9 shutil 模块 ............................................................................................... 333
10.3.10 statistics 模块 ........................................................................................ 333
10.3.11 sys 模块 ................................................................................................. 333
10.3.12 time 模块 ............................................................................................... 333
10.3.13 turtle 模块 .............................................................................................. 333
10.3.14 unittest 模块 .......................................................................................... 333
10.4 最后的话:使用内置功能 .................................................................................. 334