46
2.10序列操作 48
2.11可变序列操作 50
2.12Set操作 51
2.13映射操作 52
2.14列表、Set与字典解析式 53
2.15生成器表达式 55
2.16特性(.)运算符 57
2.17函数调用()运算符 57
2.18求值顺序 57
2.19最后的话:数据的秘密 59
3程序结构与控制流 60
3.1程序结构与执行 60
3.2条件执行 60
3.3循环与迭代 61
3.4异常 65
3.4.1异常层次 68
3.4.2异常与控制流 69
3.4.3定义新异常 70
3.4.4链式异常 71
3.4.5异常回溯 74
3.4.6异常处理建议 74
3.5上下文管理器和with语句 76
3.6断言和__debug__ 78
3.7最后的话 79
4对象、类型和协议 80
4.1核心概念 80
4.2对象标识与类型 81
4.3引用计数与垃圾回收 82
4.4引用与复制 84
4.5对象的表示与打印 85
4.6头等对象 86
4.7对可选的或缺失的数据使用None 88
4.8对象协议及数据抽象 88
4.9对象协议 90
4.10数字协议 91
4.11比较协议 93
4.12转换协议 95
4.13容器协议 96
4.14迭代协议 98
4.15特性协议 99
4.16函数协议 100
4.17上下文管理器协议 100
4.18最后的话:关于Pythonic 101
5函数 102
5.1函数定义 102
5.2缺省参数 102
5.3可变参数 103
5.4关键字参数 104
5.5可变关键字参数 105
5.6接受所有输入的函数 105
5.7位置限定(Positional-Only)参数 106
5.8名称、文档字符串和类型提示 107
5.9函数应用及参数传递 108
5.10返回值 110
5.11错误处理 111
5.12作用域规则 112
5.13递归 115
5.14lambda表达式 115
5.15高阶函数 116
5.16回调函数中的参数传递 119
5.17从回调函数返回结果 123
5.18装饰器 125
5.19map、filter和reduce 128
5.20函数自省、特性和签名 130
5.21环境检查 133
5.22动态代码的执行和创建 135
5.23异步函数和await 136
5.24最后的话:函数与组合的思考 138
6生成器 139
6.1生成器与yield 139
6.2可重新启动的生成器 142
6.3生成器委托 142
6.4生成器实践 144
6.5增强型生成器和yield表达式 146
6.6增强型生成器的应用 148
6.7生成器与await的联系 151
6.8最后的话:生成器简史及展望 152
7类和面向对象编程 153
7.1对象 153
7.2class语句 154
7.3实例 155
7.4特性访问 156
7.5作用域规则 158
7.6运算符重载及协议 159
7.7继承 160
7.8通过组合避免继承 163
7.9通过函数避免继承 166
7.10动态绑定和鸭子类型 167
7.11继承内置类型的危险性 167
7.12类变量和方法 169
7.13静态方法 173
7.14略谈设计模式 176
7.15数据封装和私有特性 176
7.16类型提示 179
7.17属性 180
7.18类型、接口和抽象基类 183
7.19多重继承、接口和mixin 187
7.20基于类型的分派 193
7.21类装饰器 194
7.22有监督的继承 197
7.23对象生命周期与内存管理 200
7.24弱引用 204
7.25内部对象表示和特性绑定 206
7.26代理、包装器和委托 208
7.27使用__slots__减少内存 210
7.28描述符 211
7.29类定义过程 215
7.30动态创建类 216
7.31元类 218
7.32用于实例和类的内置对象 222
7.33最后的话:保持简单 223
8模块和包 224
8.1模块和import语句 224
8.2模块缓存 226
8.3从模块导入选定名称 227
8.4循环导入 229
8.5模块的重新加载与卸载 231
8.6模块编译 232
8.7模块搜索路径 232
8.8作为主程序执行 233
8.9包 234
8.10包内导入 236
8.11以脚本方式运行包的子模块 237
8.12控制包命名空间 238
8.13控制包的导出 239
8.14包数据 240
8.15模块对象 241
8.16部署Python包 242
8.17倒数第二句话:从一个包开始 244
8.18最后的话:保持简单 244
9输入与输出 245
9.1数据表示 245
9.2文本编码和解码 246
9.3文本和字节格式化 248
9.4读取命令行选项 252
9.5环境变量 253
9.6文件和文件对象 254
9.6.1文件名称 255
9.6.2文件模式 256
9.6.3I/O缓冲 256
9.6.4文本模式编码 257
9.6.5文本模式行处理 257
9.7I/O抽象层 258
9.8标准输入、输出和错误 261
9.9目录 262
9.10print()函数 262
9.11生成输出 263
9.12消费输入 264
9.13对象序列化 266
9.14阻塞操作和并发 267
9.14.1非阻塞I/O 268
9.14.2I/O轮询 269
9.14.3线程 269
9.14.4使用asyncio并发执行 270
9.15标准库模块 271
9.15.1asyncio模块 271
9.15.2binascii模块 272
9.15.3cgi模块 273
9.15.4configparser模块 274
9.15.5csv模块 274
9.15.6errno模块 275
9.15.7fcntl模块 276
9.15.8hashlib模块 276
9.15.9http包 277
9.15.10io模块 277
9.15.11json模块 278
9.15.12logging模块 278
9.15.13os模块 279
9.15.14os.path模块 279
9.15.15pathlib模块 281
9.15.16re模块 281
9.15.17shutil模块 282
9.15.18select模块 282
9.15.19smtplib模块 283
9.15.20socket模块 284
9.15.21struct模块 286
9.15.22subprocess模块 286
9.15.23tempfile模块 287
9.15.24textwrap模块 288
9.15.25threading模块 289
9.15.26time模块 291
9.15.27urllib包 291
9.15.28unicodedata模块 292
9.15.29xml包 293
9.16最后的话 294
10内置函数和标准库 295
10.1内置函数 295
10.2内置异常 311
10.2.1异常基类 311
10.2.2异常特性 311
10.2.3预定义异常类 312
10.3标准库 315
10.3.1collections模块 315
10.3.2datetime模块 315
10.3.3itertools模块 315
10.3.4inspect模块 316
10.3.5math模块 316
10.3.6os模块 316
10.3.7random模块 316
10.3.8re模块 316
10.3.9shutil模块 316
10.3.10statistics模块 316
10.3.11sys模块 316
10.3.12time模块 316
10.3.13turtle模块 317
10.3.14unittest模块 317
10.4最后的话:使用内置功能 317