第1章 文本 1
1.1 string:文本常量和模板 1
1.1.1函数 1
1.1.2模板 2
1.1.3高级模板 3
1.1.4 Formatter 5
1.1.5常量 5
1.2 textwrap:格式化文本段落 6
1.2.1示例数据 6
1.2.2填充段落 7
1.2.3去除现有的缩进 7
1.2.4结合dedent和fill 8
1.2.5缩进块 8
1.2.6悬挂缩进 10
1.2.7截断长文本 10
1.3 re:正则表达式 11
1.3.1查找文本中的模式 11
1.3.2编译表达式 12
1.3.3多重匹配 13
1.3.4模式语法 14
1.3.5限制搜索 22
1.3.6用组解析匹配 24
1.3.7搜索选项 29
1.3.8前向或后向 35
1.3.9自引用表达式 38
1.3.10用模式修改字符串 42
1.3.11利用模式拆分 44
1.4 difflib:比较序列 46
1.4.1比较文本体 47
1.4.2无用数据 49
1.4.3比较任意类型 50
第2章 数据结构 52
2.1 enum:枚举类型 53
2.1.1创建枚举 53
2.1.2迭代 53
2.1.3比较Enum 54
2.1.4唯一枚举值 55
2.1.5通过编程创建枚举 56
2.1.6非整数成员值 58
2.2 collections:容器数据类型 60
2.2.1 ChainMap:搜索多个字典 60
2.2.2 Counter:统计可散列的对象 63
2.2.3 defaultdict:缺少的键返回一个默认值 66
2.2.4 deque:双端队列 67
2.2.5 namedtuple:带命名字段的元组子类 70
2.2.6 OrderedDict:记住向字典中增加键的顺序 74
2.2.7 collections.abc:容器的抽象基类 76
2.3数组:固定类型数据序列 78
2.3.1初始化 78
2.3.2处理数组 79
2.3.3数组和文件 79
2.3.4候选字节顺序 80
2.4 heapq:堆排序算法 81
2.4.1示例数据 81
2.4.2创建堆 82
2.4.3访问堆的内容 83
2.4.4堆的数据极值 85
2.4.5高效合并有序序列 85
2.5 bisect:维护有序列表 86
2.5.1有序插入 86
2.5.2处理重复 87
2.6 queue:线程安全的FIFO实现 88
2.6.1基本FIFO队列 88
2.6.2 LIFO队列 89
2.6.3优先队列 89
2.6.4构建一个多线程播客客户程序 90
2.7 struct:二进制数据结构 93
2.7.1函数与St ruct类 93
2.7.2打包和解包 93
2.7.3字节序 94
2.7.4缓冲区 95
2.8 weakref:对象的非永久引用 96
2.8.1引用 96
2.8.2引用回调 97
2.8.3最终化对象 98
2.8.4代理 100
2.8.5缓存对象 101
2.9 copy:复制对象 103
2.9.1浅副本 103
2.9.2深副本 104
2.9.3定制复制行为 105
2.9.4深副本中的递归 106
2.10 pprint:美观打印数据结构 107
2.10.1打印 108
2.10.2格式化 108
2.10.3任意类 109
2.10.4递归 110
2.10.5限制嵌套输出 110
2.10.6控制输出宽度 111
第3章 算法 113
3.1 functools:管理函数的工具 113
3.1.1修饰符 113
3.1.2比较 119
3.1.3缓存 122
3.1.4缩减数据集 125
3.1.5泛型函数 127
3.2 itertools:迭代器函数 129
3.2.1合并和分解迭代器 129
3.2.2转换输入 132
3.2.3生成新值 133
3.2.4过滤 135
3.2.5数据分组 138
3.2.6合并输入 139
3.3 operator:内置操作符的函数接口 144
3.3.1逻辑操作 144
3.3.2比较操作符 145
3.3.3算术操作符 145
3.3.4序列操作符 146
3.3.5原地操作符 148
3.3.6属性和元素“获取方法” 148
3.3.7结合操作符和定制类 150
3.4 contextlib:上下文管理器工具 151
3.4.1上下文管理器API 151
3.4.2上下文管理器作为函数修饰符 153
3.4.3从生成器到上下文管理器 154
3.4.4关闭打开的句柄 156
3.4.5忽略异常 157
3.4.6重定向输出流 158
3.4.7动态上下文管理器栈 159
第4章 日期和时间 166
4.1 time:时钟时间 166
4.1.1比较时钟 166
4.1.2墙上时钟时间 167
4.1.3单调时钟 168
4.1.4处理器时钟时间 169
4.1.5性能计数器 170
4.1.6时间组成 170
4.1.7处理时区 171
4.1.8解析和格式化时间 172
4.2 datetime:日期和时间值管理 174
4.2.1时间 174
4.2.2日期 175
4.2.3 timedelta 177
4.2.4日期算术运算 178
4.2.5比较值 179
4.2.6结合日期和时间 179
4.2.7格式化和解析 180
4.2.8时区 182
4.3 calendar:处理日期 183
4.3.1格式化示例 183
4.3.2本地化环境 185
4.3.3计算日期 186
第5章 数学运算 188
5.1 decimal:定点数和浮点数的数学运算 188
5.1.1 Decimal 188
5.1.2格式化 189
5.1.3算术运算 190
5.1.4特殊值 191
5.1.5上下文 192
5.2 f ractions:有理数 196
5.2.1创建Fraction实例 197
5.2.2算术运算 198
5.2.3近似值 199
5.3 random:伪随机数生成器 199
5.3.1生成随机数 200
5.3.2指定种子 200
5.3.3保存状态 201
5.3.4随机整数 202
5.3.5选择随机元素 203
5.3.6排列 203
5.3.7采样 205
5.3.8多个并发生成器 205
5.3.9 SystemRandom 206
5.3.10非均匀分布 207
5.4 math:数学函数 208
5.4.1特殊常量 208
5.4.2测试异常值 208
5.4.3比较 210
5.4.4将浮点值转换为整数 212
5.4.5浮点值的其他表示 213
5.4.6正号和负号 214
5.4.7常用计算 215
5.4.8指数和对数 218
5.4.9角 222
5.4.10三角函数 224
5.4.11双曲函数 226
5.4.12特殊函数 227
5.5 statistics:统计计算 228
5.5.1平均值 228
5.5.2方差 230
第6章 文件系统 232
6.1 os.path:平台独立的文件名管理 233
6.1.1解析路径 233
6.1.2建立路径 236
6.1.3规范化路径 237
6.1.4文件时间 238
6.1.5测试文件 238
6.2 pathlib:文件系统路径作为对象 240
6.2.1路径表示 240
6.2.2建立路径 240
6.2.3解析路径 242
6.2.4创建具体路径 243
6.2.5目录内容 244
6.2.6读写文件 246
6.2.7管理目录和符号链接 246
6.2.8文件类型 247
6.2.9文件属性 248
6.2.10权限 250
6.2.11删除 250
6.3 glob:文件名模式匹配 252
6.3.1示例数据 252
6.3.2通配符 252
6.3.3单字符通配符 253
6.3.4字符区间 253
6.3.5转义元字符 254
6.4 fnmatch:UNIX式glob模式匹配 254
6.4.1简单匹配 254
6.4.2过滤 255
6.4.3转换模式 256
6.5 linecache:高效读取文本文件 257
6.5.1测试数据 257
6.5.2读取特定行 257
6.5.3处理空行 258
6.5.4错误处理 258
6.5.5读取Python源文件 259
6.6 tempfile:临时文件系统对象 260
6.6.1临时文件 260
6.6.2命名文件 262
6.6.3假脱机文件 262
6.6.4临时目录 263
6.6.5预测名 264
6.6.6临时文件位置 264
6.7 shutil:高层文件操作 265
6.7.1复制文件 265
6.7.2复制文件元数据 268
6.7.3处理目录树 269
6.7.4查找文件 271
6.7.5归档 272
6.7.6文件系统空间 275
6.8 filecmp:比较文件 276
6.8.1示例数据 276
6.8.2比较文件 278
6.8.3比较目录 279
6.8.4在程序中使用差异 280
6.9 mmap:内存映射文件 283
6.9.1读文件 284
6.9.2写文件 285
6.9.3正则表达式 286
6.10 codecs:字符串编码和解码 287
6.10.1 Unicode入门 287
6.10.2处理文件 289
6.10.3字节序 291
6.10.4错误处理 293
6.10.5编码转换 295
6.10.6非Unicode编码 296
6.10.7增量编码 297
6.10.8 Unicode数据和网络通信 299
6.10.9定义定制编码 301
6.11 io:文本、十进制和原始流I/O工具 307
6.11.1内存中的流 307
6.11.2为文本数据包装字节流 308
第7章 数据持久存储与交换 311
7.1 pickle:对象串行化 311
7.1.1编码和解码字符串中的数据 311
7.1.2处理流 312
7.1.3重构对象的问题 313
7.1.4不可腌制的对象 314
7.1.5循环引用 316
7.2 shelve:对象的持久存储 318
7.2.1创建一个新shelf 318
7.2.2写回 319
7.2.3特定shelf类型 320
7.3 d bm : UNIX键-值数据库 320
7.3.1数据库类型 321
7.3.2创建一个新数据库 321
7.3.3打开一个现有数据库 322
7.3.4错误情况 322
7.4 sqlite3:嵌入式关系数据库 323
7.4.1创建数据库 323
7.4.2获取数据 326
7.4.3查询元数据 327
7.4.4行对象 328
7.4.5在查询中使用变量 329
7.4.6批量加载 331
7.4.7定义新的列类型 331
7.4.8确定列类型 334
7.4.9事务 336
7.4.10隔离级别 338
7.4.11内存中的数据库 341
7.4.12导出数据库内容 341
7.4.13在SQL中使用Python函数 342
7.4.14带正则表达式的查询 344
7.4.15 定制聚集 345
7.4.16线程和连接共享 346
7.4.17限制对数据的访问 347
7.5 xml.et ree.ElementTree:XML操纵API 349
7.5.1解析XML文档 349
7.5.2遍历解析树 350
7.5.3查找文档中的节点 351
7.5.4解析节点属性 352
7.5.5解析时监视事件 354
7.5.6创建一个定制树构造器 356
7.5.7解析串 357
7.5.8用元素节点构造文档 359
7.5.9美观打印XML 359
7.5.10设置元素属性 360
7.5.11由节点列表构造树 362
7.5.12将XML串行化至一个流 364
7.6 CSv:逗号分隔值文件 366
7.6.1读文件 366
7.6.2写文件 367
7.6.3方言 368
7.6.4使用字段名 373
第8章 数据压缩与归档 375
8.1 zlib: GNU zlib压缩 375
8.1.1处理内存中的数据 375
8.1.2增量压缩与解压缩 377
8.1.3混合内容流 378
8.1.4校验和 378
8.1.5压缩网络数据 379
8.2 gzip:读写GNU zip文件 382
8.2.1写压缩文件 382
8.2.2读压缩数据 384
8.2.3处理流 385
8.3 bz2:bzip2压缩 386
8.3.1内存中的一次性操作 386
8.3.2增量压缩和解压缩 388
8.3.3混合内容流 388
8.3.4写压缩文件 389
8.3.5读压缩文件 390
8.3.6读写Unicode数据 391
8.3.7压缩网络数据 392
8.4 tarfile:tar归档访问 395
8.4.1测试tar文件 396
8.4.2从归档读取元数据 396
8.4.3从归档抽取文件 397
8.4.4创建新归档 399
8.4.5使用候选归档成员名 399
8.4.6从非文件源写数据 400
8.4.7追加到归档 400
8.4.8处理压缩归档 401
8.5 zipfile: ZIP归档访问 402
8.5.1测试ZIP文件 402
8.5.2从归档读取元数据 402
8.5.3从归档抽取归档文件 404
8.5.4创建新归档 404
8.5.5使用候选归档成员名 406
8.5.6从非文件源写数据 406
8.5.7利用ZipInfo实例写数据 407
8.5.8追加到文件 407
8.5.9 Python ZIP归档 408
8.5.10限制 410
第9章 加密 411
9.1 hashlib:密码散列 411
9.1.1散列算法 411
9.1.2示例数据 412
9.1.3 MD5示例 412
9.1.4 SHA1示例 412
9.1.5按名创建散列 413
9.1.6增量更新 413
9.2 hmac:密码消息签名与验证 414
9.2.1消息签名 415
9.2.2候选摘要类型 415
9.2.3二进制摘要 416
9.2.4消息签名的应用 416
第10章 使用进程、线程和协程提供并发性 420
10.1 subprocess:创建附加进程 420
10.1.1运行外部命令 421
10.1.2直接处理管道 425
10.1.3连接管道段 427
10.1.4与其他命令交互 428
10.1.5进程间传递信号 430
10.2 signal:异步系统事件 434
10.2.1接收信号 434
10.2.2获取已注册的处理器 435
10.2.3发送信号 436
10.2.4闹铃 436
10.2.5忽略信号 437
10.2.6信号和线程 438
10.3 threading:进程中管理并发操作 440
10.3.1 Thread对象 440
10.3.2确定当前线程 441
10.3.3守护与非守护线程 442
10.3.4枚举所有线程 444
10.3.5派生线程 445
10.3.6定时器线程 447
10.3.7线程间传送信号 447
10.3.8控制资源访问 449
10.3.9同步线程 453
10.3.10限制资源的并发访问 456
10.3.11线程特定的数据 457
10.4 multiprocessing:像线程一样管理进程 459
10.4.1 multiprocessing基础 460
10.4.2可导入的目标函数 461
10.4.3确定当前进程 461
10.4.4守护进程 462
10.4.5等待进程 463
10.4.6终止进程 465
10.4.7进程退出状态 466
10.4.8日志 467
10.4.9派生进程 469
10.4.10向进程传递消息 469
10.4.11进程间信号传输 472
10.4.12控制资源访问 473
10.4.13同步操作 474
10.4.14控制资源的并发访问 475
10.4.15 管理共享状态 476
10.4.16共享命名空间 477
10.4.17进程池 479
10.4.18实现MapReduce 480
10.5 asyncio:异步I/O、事件循环和并发工具 484
10.5.1异步并发概念 484
10.5.2利用协程合作完成多任务 485
10.5.3调度常规函数调用 488
10.5.4异步地生成结果 490
10.5.5并发地执行任务 492
10.5.6组合协程和控制结构 495
10.5.7同步原语 499
10.5.8提供协议类抽象的异步I/O 505
10.5.9使用协程和流的异步I/O 510
10.5.10使用SSL 514
10.5.11与域名服务交互 516
10.5.12使用子进程 518
10.5.13接收UNIX信号 523
10.5.14结合使用协程、线程与进程 525
10.5.15用asyncio调试 527
10.6 concurrent.futures:管理并发任务池 530
10.6.1利用基本线程池使用map() 531
10.6.2调度单个任务 532
10.6.3按任意顺序等待任务 532
10.6.4 Future回调 533
10.6.5撤销任务 534
10.6.6任务中的异常 535
10.6.7上下文管理器 536
10.6.8进程池 537
第11章 网络通信 539
11.1 ipaddress:Internet地址 539
11.1.1地址 539
11.1.2网络 540
11.1.3接口 543
11.2 socket:网络通信 544
11.2.1寻址、协议簇和套接字类型 544
11.2.2 TCP/IP客户和服务器 552
11.2.3用户数据报客户和服务器 558
11.2.4 UNIX域套接字 560
11.2.5组播 563
11.2.6发送二进制数据 566
11.2.7非阻塞通信和超时 568
11.3 selectors:I/O多路复用抽象 568
11.3.1操作模型 569
11.3.2回送服务器 569
11.3.3回送客户 570
11.3.4服务器和客户 571
11.4 select:高效等待I/O 572
11.4.1使用select() 572
11.4.2带超时的非阻塞I/O 577
11.4.3使用poll() 579
11.4.4平台特定的选项 582
11.5 socketserver:创建网络服务器 583
11.5.1服务器类型 583
11.5.2服务器对象 583
11.5.3实现服务器 584
11.5.4请求处理器 584
11.5.5回送示例 584
11.5.6线程和进程 588
第12章 互联网 592
12.1 urllib.parse:分解URL 592
12.1.1解析 593
12.1.2反解析 595
12.1.3连接 596
12.1.4解码查询参数 597
12.2 urllib.request:网络资源访问 599
12.2.1 HTTP GET 599
12.2.2编码参数 600
12.2.3 HTTP POST 601
12.2.4添加发出首部 602
12.2.5从请求提交表单数据 602
12.2.6上传文件 603
12.2.7创建定制协议处理器 606
12.3 urllib.robotparser:Internet蜘蛛访问控制 608
12.3.1 robots.txt 608
12.3.2测试访问权限 609
12.3.3长寿命蜘蛛 610
12.4 base64:用ASCII编码二进制数据 611
12.4.1 Base64编码 611
12.4.2 Base64解码 612
12.4.3 URL安全的变种 612
12.4.4其他编码 613
12.5 http.server:实现Web服务器的基类 615
12.5.1 HTTP GET 615
12.5.2 HTTP POST 616
12.5.3线程和进程 618
12.5.4处理错误 619
12.5.5设置首部 620
12.5.6命令行用法 621
12.6 http.cookies:HTTP cookie 622
12.6.1创建和设置cookie 622
12.6.2 Morsel 622
12.6.3编码的值 624
12.6.4接收和解析Cookie首部 624
12.6.5候选输出格式 625
12.7 webbrowser:显示Web页面 626
12.7.1简单示例 626
12.7.2窗口与标签页 626
12.7.3使用特定浏览器 627
12.7.4 BROWSER变量 627
12.7.5命令行接口 627
12.8 uuid:全局唯一标识符 628
12.8.1 UUID 1:IEEE 802 MAC地址 628
12.8.2 UUID 3和5:基于名字的值 630
12.8.3 UUID 4:随机值 631
12.8.4处理UUID对象 631
12.9 j son:JavaScript对象记法 632
12.9.1编码和解码简单数据类型 633
12.9.2人类可读和紧凑输出 633
12.9.3编码字典 635
12.9.4处理定制类型 636
12.9.5编码器和解码器类 638
12.9.6处理流和文件 640
12.9.7混合数据流 641
12.9.8命令行上处理JSON 641
12.10 xmlrpc.client: XML-RPC的客户库 642
12.10.1连接服务器 643
12.10.2数据类型 645
12.10.3传递对象 648
12.10.4二进制数据 648
12.10.5异常处理 650
12.10.6将调用组合在一个消息中 650
12.11 xmlrpc.server:一个XML-RPC服务器 652
12.11.1一个简单的服务器 652
12.11.2候选API名 653
12.11.3加点的API名 654
12.11.4任意API名 655
12.11.5公布对象的方法 656
12.11.6分派调用 657
12.11.7自省API 659
第13章 email 662
13.1 smtplib:简单邮件传输协议客户 662
13.1.1发送email消息 662
13.1.2认证和加密 663
13.1.3验证email地址 666
13.2 smtpd:示例邮件服务器 667
13.2.1邮件服务器基类 667
13.2.2调试服务器 669
13.2.3代理服务器 670
13.3 mailbox:管理email归档 670
13.3.1 mbox 671
13.3.2 Maildir 673
13.3.3消息标志 678
13.3.4其他格式 680
13.4 imaplib: IMAP4客户库 680
13.4.1变种 680
13.4.2连接服务器 681
13.4.3示例配置 682
13.4.4列出邮箱 682
13.4.5邮箱状态 684
13.4.6选择邮箱 686
13.4.7搜索消息 686
13.4.8搜索规则 687
13.4.9获取消息 689
13.4.10完整消息 693
13.4.11上传消息 694
13.4.12移动和复制消息 695
13.4.13删除消息 696
第14章 应用构建模块 699
14.1 argparse:命令行选项和参数解析 700
14.1.1建立解析器 700
14.1.2定义参数 700
14.1.3解析命令行 700
14.1.4简单示例 701
14.1.5帮助输出 707
14.1.6解析器组织 711
14.1.7高级参数处理 716
14.2 getopt:命令行选项解析 722
14.2.1函数参数 722
14.2.2短格式选项 723
14.2.3长格式选项 723
14.2.4一个完整的例子 723
14.2.5缩写长格式选项 725
14.2.6 GNU式选项解析 725
14.2.7结束参数处理 726
14.3 readline:GNU readline库 727
14.3.1配置readline 727
14.3.2完成文本 728
14.3.3访问完成缓冲区 731
14.3.4输入历史 733
14.3.5 hook 736
14.4 getpass:安全密码提示 737
14.4.1示例 737
14.4.2无终端使用getpass 738
14.5 cmd:面向行的命令处理器 739
14.5.1处理命令 739
14.5.2命令参数 740
14.5.3现场帮助 741
14.5.4自动完成 742
14.5.5覆盖基类方法 744
14.5.6通过属性配置Cmd 745
14.5.7运行shell命令 746
14.5.8候选输入 747
14.5.9 sys.a rgv的命令 748
14.6 shlex:解析shell类语法 749
14.6.1解析加引号的字符串 749
14.6.2为shell建立安全的字符串 751
14.6.3嵌入注释 751
14.6.4将字符串分解为token 752
14.6.5包含其他token源 752
14.6.6控制解析器 753
14.6.7错误处理 755
14.6.8 POSIX与非POSIX解析 756
14.7 configparser:处理配置文件 757
14.7.1配置文件格式 757
14.7.2读取配置文件 758
14.7.3访问配置设置 759
14.7.4修改设置 765
14.7.5保存配置文件 766
14.7.6选项搜索路径 767
14.7.7用拼接合并值 768
14.8 logging:报告状态、错误和信息消息 772
14.8.1日志系统的组成 773
14.8.2应用与库中的日志记录 773
14.8.3记入文件 773
14.8.4旋转日志文件 774
14.8.5详细级别 774
14.8.6命名日志记录器实例 776
14.8.7日志树 776
14.8.8与warnings模块集成 777
14.9 f ileinput:命令行过滤器框架 778
14.9.1将m3u文件转换为RSS 778
14.9.2进度元数据 779
14.9.3原地过滤 781
14.10 atexit:程序关闭回调 782
14.10.1注册退出回调 782
14.10.2修饰符语法 783
14.10.3撤销回调 784
14.10.4什么情况下不调用atexit函数 785
14.10.5处理异常 786
14.11 sched:定时事件调度器 787
14.11.1有延迟地运行事件 788
14.11.2重叠事件 788
14.11.3事件优先级 789
14.11.4取消事件 790
第15章 国际化和本地化 791
15.1 gettext:消息编目 791
15.1.1转换工作流概述 791
15.1.2由源代码创建消息编目 792
15.1.3运行时查找消息编目 794
15.1.4复数值 795
15.1.5应用与模块本地化 797
15.1.6切换转换 798
15.2 locale:文化本地化API 798
15.2.1探查当前本地化环境 799
15.2.2货币 803
15.2.3格式化数字 804
15.2.4解析数字 805
15.2.5日期和时间 806
第16章 开发工具 807
16.1 pydoc:模块的联机帮助 808
16.1.1纯文本帮助 808
16.1.2 HTML帮助 809
16.1.3交互式帮助 809
16.2 doctest:通过文档完成测试 810
16.2.1起步 810
16.2.2处理不可预测的输出 811
16.2.3 traceback 814
16.2.4避开空白符 815
16.2.5测试位置 819
16.2.6外部文档 822
16.2.7运行测试 824
16.2.8测试上下文 827
16.3 unittest:自动测试框架 829
16.3.1基本测试结构 829
16.3.2运行测试 829
16.3.3测试结果 830
16.3.4断言真值 831
16.3.5测试相等性 832
16.3.6几乎相等? 833
16.3.7容器 833
16.3.8测试异常 837
16.3.9测试固件 838
16.3.10用不同输入重复测试 840
16.3.11跳过测试 842
16.3.12忽略失败测试 842
16.4 trace:执行程序流 843
16.4.1示例程序 843
16.4.2跟踪执行 844
16.4.3代码覆盖 845
16.4.4调用关系 847
16.4.5编程接口 848
16.4.6保存结果数据 849
16.4.7选项 850
16.5 traceback:异常和栈轨迹 850
16.5.1支持函数 851
16.5.2检查栈 851
16.5.3 traceback异常 853
16.5.4底层异常API 854
16.5.5底层栈API 857
16.6 cgitb:详细的traceback报告 859
16.6.1标准traceback转储 859
16.6.2启用详细的traceback 860
16.6.3 traceback中的局部变量 862
16.6.4异常属性 864
16.6.5 HTML输出 866
16.6.6记录traceback 866
16.7 pd b:交互式调试工具 868
16.7.1启动调试工具 869
16.7.2控制调试工具 871
16.7.3断点 881
16.7.4改变执行流 890
16.7.5用别名定制调试工具 895
16.7.6保存配置设置 897
16.8 profile和pstats:性能分析 898
16.8.1运行性能分析工具 898
16.8.2在上下文中运行 901
16.8.3 pstats:保存和处理统计信息 901
16.8.4限制报告内容 903
16.8.5调用者/被调用者图 903
16.9 timeit:测量小段Python代码执行的时间 905
16.9.1模块内容 905
16.9.2基本示例 905
16.9.3将值存储在字典中 906
16.9.4从命令行执行 908
16.10 tabnanny:缩进验证工具 909
16.11 compileall:字节编译源文件 910
16.11.1编译一个目录 910
16.11.2忽略文件 911
16.11.3编译sys.path 912
16.11.4编译单个文件 912
16.11.5从命令行运行 913
16.12 pyclbr:类浏览器 914
16.12.1扫描类 915
16.12.2扫描函数 916
16.13 venv:创建虚拟环境 917
16.13.1创建环境 917
16.13.2虚拟环境的内容 917
16.13.3使用虚拟环境 918
16.14 ensu repip:安装Python包安装工具 920
第17章 运行时特性 922
17.1 site:全站点配置 922
17.1.1导入路径 922
17.1.2用户目录 923
17.1.3路径配置文件 924
17.1.4定制站点配置 926
17.1.5定制用户配置 927
17.1.6禁用site模块 929
17.2 Sys:系统特定配置 929
17.2.1解释器设置 929
17.2.2运行时环境 935
17.2.3内存管理和限制 937
17.2.4异常处理 942
17.2.5底层线程支持 944
17.2.6模块和导入 947
17.2.7跟踪程序运行情况 963
17.3 os:可移植访问操作系统特定特性 968
17.3.1检查文件系统内容 968
17.3.2管理文件系统权限 971
17.3.3创建和删除目录 973
17.3.4处理符号链接 973
17.3.5安全地替换现有文件 974
17.3.6检测和改变进程所有者 975
17.3.7管理进程环境 976
17.3.8管理进程工作目录 977
17.3.9运行外部命令 977
17.3.10用os.fork()创建进程 979
17.3.11等待子进程 980
17.3.12 Spawn创建新进程 982
17.3.13操作系统错误码 982
17.4 platform:系统版本信息 983
17.4.1解释器 983
17.4.2平台 984
17.4.3操作系统和硬件信息 985
17.4.4可执行程序体系结构 986
17.5 resource:系统资源管理 987
17.5.1当前使用情况 987
17.5.2资源限制 988
17.6 g c:垃圾回收器 990
17.6.1跟踪引用 990
17.6.2强制垃圾回收 992
17.6.3查找无法回收的对象引用 993
17.6.4回收阈值和代 995
17.6.5调试 998
17.7 sysconfig:解释器编译时配置 1002
17.7.1配置变量 1002
17.7.2安装路径 1004
17.7.3 Python版本和平台 1007
第18章 语言工具 1009
18.1 warnings:非致命警告 1009
18.1.1分类和过滤 1010
18.1.2生成警告 1010
18.1.3用模式过滤 1011
18.1.4重复的警告 1013
18.1.5候选消息传送函数 1013
18.1.6格式化 1014
18.1.7警告中的栈层次 1014
18.2 abc:抽象基类 1015
18.2.1 ABC如何工作 1015
18.2.2注册一个具体类 1016
18.2.3通过派生实现 1017
18.2.4辅助基类 1017
18.2.5不完整的实现 1018
18.2.6 ABC中的具体方法 1019
18.2.7抽象属性 1020
18.2.8抽象类和静态方法 1022
18.3 dis:Python字节码反汇编工具 1023
18.3.1基本反汇编 1023
18.3.2反汇编函数 1024
18.3.3类 1025
18.3.4源代码 1026
18.3.5使用反汇编调试 1027
18.3.6循环的性能分析 1028
18.3.7编译器优化 1033
18.4 inspect:检查现场对象 1035
18.4.1示例模块 1035
18.4.2检查模块 1035
18.4.3检查类 1036
18.4.4检查实例 1038
18.4.5文档串 1038
18.4.6获取源代码 1039
18.4.7方法和函数签名 1041
18.4.8类层次体系 1043
18.4.9方法解析顺序 1044
18.4.10栈与帧 1045
18.4.11命令行接口 1047
第19章 模块和包 1048
19.1 importlib: Python的导入机制 1048
19.1.1示例包 1048
19.1.2模块类型 1049
19.1.3导入模块 1049
19.1.4加载工具 1051
19.2 pkgutil:包工具 1052
19.2.1包导入路径 1052
19.2.2包的开发版本 1054
19.2.3用PKG文件管理路径 1055
19.2.4嵌套包 1056
19.2.5包数据 1058
19.3 zipimport:从ZIP归档加载Python代码 1060
19.3.1示例 1060
19.3.2查找模块 1061
19.3.3访问代码 1061
19.3.4源代码 1062
19.3.5包 1063
19.3.6数据 1063
附录A移植说明 1066
附录B标准库之外 1081