[套装书]Python学习手册(原书第5版)+Python 3标准库(2册)
基本信息
- 作者: [美]马克·卢茨(Mark Lutz)[美] 道格·赫尔曼(Doug Hellmann)
- 丛书名: O’Reilly精品图书系列
- 出版社:机械工业出版社
- ISBN:9782002101050
- 上架时间:2020-2-10
- 出版日期:2018 年10月
- 开本:16开
- 页码:2620
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python

内容简介
书籍
计算机书籍
---------------------------Python学习手册(原书第5版)---------------------------
Python学习手册(原书第5版) 本书分为上、下两册。
如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,学习Python的一般语法模型;利用Python的基本程序工具的结构和重用代码;了解Python模块:语句包、函数和其他工具;探索Python的面向对象的编程工具,用于构建代码;了解异常处理模型和开发工具编写较大的程序;探索先进的Python工具,包括装饰符、描述符、元类、Unicode的处理。
---------------------------Python 3标准库---------------------------
在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。
计算机书籍
---------------------------Python学习手册(原书第5版)---------------------------
Python学习手册(原书第5版) 本书分为上、下两册。
如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,学习Python的一般语法模型;利用Python的基本程序工具的结构和重用代码;了解Python模块:语句包、函数和其他工具;探索Python的面向对象的编程工具,用于构建代码;了解异常处理模型和开发工具编写较大的程序;探索先进的Python工具,包括装饰符、描述符、元类、Unicode的处理。
---------------------------Python 3标准库---------------------------
在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。
作译者
---------------------------Python学习手册(原书第5版)---------------------------
[美]马克·卢茨(Mark Lutz)著:Mark Lutz是一位世界级的Python培训讲师。他是Python畅销书籍的作者,同时从1992年起就成为Python社区的引领者。Mark有着30余年的软件开发经验,也是《Python编程》《Python袖珍指南》等书的作者。
---------------------------Python 3标准库---------------------------
[美] 道格·赫尔曼(Doug Hellmann)著:
目录
---------------------------Python学习手册(原书第5版)---------------------------
上册
前言 ........................................1
第一部分 使用入门
第1章 问答环节 ........................................ 21
人们为何使用Python ........................................21
软件质量 ........................................22
开发者效率........................................23
Python是一门“脚本语言”吗 ........................................23
好吧,Python的缺点是什么 ........................................25
如今谁在使用Python ........................................25
其他的Python设计权衡:一些难以把握的方面 ........................................26
使用Python可以做些什么 ........................................28
系统编程 ........................................28
图形用户界面(GUI) ........................................29
Internet脚本 ........................................29
组件集成 ........................................30
数据库编程........................................30
快速原型 ........................................31
数值计算和科学计算编程 ........................................31
更多内容:游戏、图像、数据挖掘、机器人、Excel等 ................................31
Python如何开发并获得支持 ........................................32
开源的权衡........................................33
Python有哪些技术上的优点 ........................................33
面向对象和函数式 ........................................33
免费 ........................................34
可移植 ........................................34
功能强大 ........................................35
可混合 ........................................36
相对简单易用 ........................................36
相对简单易学 ........................................37
以Monty Python命名 ........................................37
Python和其他语言比较起来怎么样 ........................................38
本章小结 ........................................39
本章习题 ........................................39
习题解答 ........................................40
Python是工程,不是艺术 ........................................41
第2章 Python如何运行程序 ........................................ 43
Python解释器简介 ........................................43
程序执行 ........................................45
程序员的视角 ........................................45
Python的视角 ........................................46
执行模型的变体 ........................................48
Python的各种实现 ........................................49
执行优化工具 ........................................52
冻结二进制文件 ........................................53
未来的可能性 ........................................54
本章小结 ........................................55
本章习题 ........................................55
习题解答 ........................................56
第3章 你应如何运行程序 ........................................ 57
交互式命令行模式 ........................................57
开始一个交互式会话 ........................................57
Windows平台上的交互式命令行在哪里 ........................................59
系统路径 ........................................59
Python 3.3中的新Windows选项:PATH和启动器 ........................................60
运行的位置:代码目录 ........................................61
不需要输入的内容:提示符和注释 ........................................62
交互式地运行代码 ........................................63
为什么要使用交互式命令行模式 ........................................64
使用注意:交互命令行模式 ........................................65
系统命令行和文件 ........................................67
第一段脚本........................................68
使用命令行运行文件 ........................................69
不同的命令行使用方式 ........................................70
使用注意:命令行和文件 ........................................71
UNIX风格可执行脚本:#! ........................................72
UNIX脚本基础 ........................................72
UNIX env查找技巧 ........................................73
Python 3.3 Windows启动器:Windows也有#!了 ........................................73
点击文件图标 ........................................75
图标点击基础知识 ........................................75
在Windows上点击图标 ........................................76
Windows上输入的技巧 ........................................77
其他图标点击的限制 ........................................79
模块导入和重载 ........................................79
导入和重载基础知识 ........................................80
模块的宏观视角:属性 ........................................82
使用注意:import和reload ........................................85
使用exec运行模块文件 ........................................85
IDLE用户界面 ........................................86
IDLE启动细节 ........................................87
IDLE基础用法 ........................................88
IDLE功能特性 ........................................89
高级IDLE工具 ........................................90
使用注意:IDLE ........................................90
其他IDE ........................................92
其他启动选项 ........................................93
嵌入式调用........................................93
冻结二进制可执行文件 ........................................94
文本编辑器启动方式 ........................................94
其他的启动方式 ........................................95
未来的可能........................................95
应该选用哪种方式 ........................................95
调试Python代码 ........................................96
本章小结 ........................................97
本章习题 ........................................97
习题解答 ........................................98
第一部分练习题 ........................................99
第二部分 类型和运算
第4章 介绍Python对象类型 ........................................ 105
Python知识结构 ........................................105
为什么要使用内置类型 ........................................106
Python核心数据类型 ........................................107
数字 ........................................108
字符串 ........................................ 110
序列操作 ........................................ 110
不可变性 ........................................ 112
特定类型的方法 ........................................ 113
寻求帮助 ........................................ 115
字符串编程的其他方式 ........................................ 116
Unicode字符串 ........................................ 117
模式匹配 ........................................ 119
列表 ........................................120
序列操作 ........................................120
特定的操作........................................121
边界检查 ........................................121
嵌套 ........................................122
推导 ........................................122
字典 ........................................125
映射操作 ........................................125
重访嵌套 ........................................126
不存在的键:if 测试 ........................................128
键的排序:for 循环 ........................................129
迭代和优化........................................131
元组 ........................................132
为什么要使用元组 ........................................133
文件 ........................................133
二进制字节文件 ........................................134
Unicode文本文件 ........................................135
其他类文件工具 ........................................137
其他核心类型 ........................................137
如何破坏代码的灵活性 ........................................139
用户定义的类 ........................................140
剩余的内容........................................141
本章小结 ........................................141
本章习题 ........................................141
习题解答 ........................................142
第5章 数值类型 ........................................ 143
数值类型基础知识 ........................................143
数值字面量........................................144
内置数值工具 ........................................146
Python表达式运算符 ........................................146
数字的实际应用 ........................................151
变量与基础表达式 ........................................151
数值的显示格式 ........................................153
str和repr显示格式 ........................................154
普通比较与链式比较 ........................................154
除法:经典除法、向下取整除法和真除法 ........................................156
整数精度 ........................................160
复数 ........................................160
十六进制、八进制和二进制:字面量与转换 ........................................161
按位操作 ........................................163
其他内置数值工具 ........................................164
其他数值类型 ........................................167
小数类型 ........................................167
分数类型 ........................................169
集合 ........................................173
布尔型 ........................................180
数值扩展 ........................................181
本章小结 ........................................182
本章习题 ........................................182
习题解答 ........................................182
第6章 动态类型 ........................................ 184
缺少声明语句的情况 ........................................184
变量、对象和引用 ........................................184
类型属于对象,而不是变量 ........................................186
对象的垃圾收集 ........................................187
关于Python垃圾回收的更多讨论 ........................................188
共享引用 ........................................189
共享引用和在原位置修改 ........................................190
共享引用和相等 ........................................192
动态类型随处可见 ........................................193
“弱”引用........................................194
本章小结 ........................................194
本章习题 ........................................194
习题解答 ........................................195
第7章 字符串基础 ........................................ 196
本章范围 ........................................196
Unicode简介 ........................................197
字符串基础 ........................................197
字符串字面量 ........................................199
单引号和双引号字符串是一样的 ........................................200
转义序列代表特殊字符 ........................................200
原始字符串阻止转义 ........................................203
三引号编写多行块字符串 ........................................205
实际应用中的字符串 ........................................206
基本操作 ........................................206
索引和分片........................................207
请留意:分片 ........................................ 211
字符串转换工具 ........................................212
修改字符串I ........................................214
字符串方法 ........................................216
方法调用语法 ........................................216
字符串的方法 ........................................217
字符串方法示例:修改字符串II ........................................218
字符串方法示例:解析文本 ........................................220
实际应用中的其他常见字符串方法 ........................................220
原始string模块的函数(在Python 3.X中删除) ........................................221
字符串格式化表达式 ........................................223
格式化表达式基础 ........................................224
高级格式化表达式语法 ........................................225
高级格式化表达式举例 ........................................226
基于字典的格式化表达式 ........................................227
字符串格式化方法调用 ........................................228
字符串格式化方法基础 ........................................228
添加键、属性和偏移量 ........................................229
高级格式化方法语法 ........................................230
高级格式化方法举例 ........................................231
与%格式化表达式比较........................................233
为什么使用格式化方法 ........................................236
通用类型分类 ........................................241
同一分类中的类型共享同一个操作集........................................241
可变类型能够在原位置修改 ........................................242
本章小结 ........................................242
本章习题 ........................................243
习题解答 ........................................243
第8章 列表与字典 ........................................ 245
列表 ........................................245
列表的实际应用 ........................................248
基本列表操作 ........................................248
列表迭代和推导 ........................................248
索引、分片和矩阵 ........................................249
原位置修改列表 ........................................250
字典 ........................................256
字典的实际应用 ........................................258
字典的基本操作 ........................................258
原位置修改字典 ........................................259
其他字典方法 ........................................260
示例:电影数据库 ........................................262
字典用法注意事项 ........................................263
创建字典的其他方式 ........................................267
请留意:字典vs列表 ........................................268
Python 3.X和2.7中的字典变化 ........................................269
请留意:字典接口 ........................................276
本章小结 ........................................277
本章习题 ........................................277
习题解答 ........................................277
第9章 元组、文件与其他核心类型 ............................... 279
元组 ........................................280
元组的实际应用 ........................................281
为什么有了列表还要元组 ........................................283
重访记录:有名元组 ........................................284
文件 ........................................286
打开文件 ........................................287
使用文件 ........................................288
文件的实际应用 ........................................289
文本和二进制文件:一个简要的故事........................................290
在文件中存储Python对象:转换 ........................................291
存储Python原生对象:pickle ........................................293
用JSON格式存储Python对象 ........................................294
存储打包二进制数据:struct ........................................296
文件上下文管理器 ........................................297
其他文件工具 ........................................297
核心类型复习与总结 ........................................299
请留意:运算符重载 ........................................300
对象灵活性........................................300
引用vs复制 ........................................301
比较、等价性和真值 ........................................303
Python中True和False的含义 ........................................307
Python的类型层次 ........................................309
类型的对象........................................309
Python中的其他类型 ........................................ 311
内置类型陷阱 ........................................ 311
赋值创建引用,而不是复制 ........................................ 311
重复会增加层次深度 ........................................312
注意循环数据结构 ........................................313
不可变类型不可以在原位置改变 ........................................313
本章小结 ........................................314
本章习题 ........................................314
习题解答 ........................................315
第二部分练习题 ........................................315
第三部分 语句和语法
第10章 Python语句简介........................................ 321
重温Python的知识结构 ........................................321
Python的语句 ........................................322
两种不同的if ........................................324
Python增加的元素 ........................................325
Python删除的元素 ........................................325
为什么采用缩进语法 ........................................327
几种特殊情况 ........................................329
简短示例:交互式循环 ........................................331
一个简单的交互式循环 ........................................331
对用户输入做数学运算 ........................................333
通过测试输入数据来处理错误 ........................................334
用try语句处理错误 ........................................335
嵌套三层深的代码 ........................................337
本章小结 ........................................338
本章习题 ........................................338
习题解答 ........................................338
第11章 赋值、表达式和打印 ....................................... 340
赋值语句 ........................................340
赋值语句形式 ........................................341
序列赋值 ........................................342
Python 3.X中的扩展序列解包 ........................................345
多目标赋值........................................349
增量赋值 ........................................350
变量命名规则 ........................................353
Python中的废弃协议 ........................................355
表达式语句 ........................................356
表达式语句和原位置修改 ........................................358
打印操作 ........................................358
Python 3.X的print函数 ........................................359
Python 2.X的print语句 ........................................362
打印流重定向 ........................................363
版本中立的打印 ........................................367
为什么你要注意:print和stdout ........................................369
本章小结 ........................................370
本章习题 ........................................370
习题解答 ........................................370
第12章 if测试和语法规则 ........................................ 372
if语句........................................372
一般形式 ........................................372
基础示例 ........................................373
多路分支 ........................................373
复习Python语法规则 ........................................375
代码块分隔符:缩进规则 ........................................377
语句分隔符:行与行间连接符 ........................................378
一些特殊情况 ........................................379
真值和布尔测试 ........................................381
if/else三元表达式 ........................................383
请留意:布尔值 ........................................384
本章小结 ........................................386
本章习题 ........................................386
习题解答 ........................................386
第13章 while循环和for循环 ........................................ 387
while循环 ........................................387
一般形式 ........................................387
示例 ........................................388
break、continue、pass和循环的else ........................................389
一般循环形式 ........................................389
pass ........................................389
continue ........................................391
break ........................................391
循环的else ........................................392
请留意:仿真C 语言的while循环 ........................................393
for循环 ........................................394
一般形式 ........................................394
示例 ........................................395
请留意:文件扫描器 ........................................400
编写循环的技巧 ........................................402
计数器循环:range ........................................402
序列扫描:while和range vs for ........................................403
序列乱序器:range和len ........................................404
非穷尽遍历:range vs分片 ........................................405
修改列表:range vs推导 ........................................406
并行遍历:zip和map ........................................407
同时给出偏移量和元素:enumerate ........................................410
请留意:shell命令及其他 ........................................ 411
本章小结 ........................................414
本章习题 ........................................414
习题解答 ........................................414
第14章 迭代和推导 ........................................ 416
迭代器:初次探索 ........................................417
迭代协议:文件迭代器 ........................................417
手动迭代:iter和next ........................................420
其他内置类型可迭代对象 ........................................423
列表推导:初次深入探索 ........................................425
列表推导基础 ........................................426
在文件上使用列表推导 ........................................427
扩展的列表推导语法 ........................................428
其他迭代上下文 ........................................430
Python 3.X新增的可迭代对象 ........................................435
对Python 2.X版本代码的影响:利与弊 ........................................435
range可迭代对象 ........................................436
map、zip和filter可迭代对象 ........................................437
多遍迭代器vs单遍迭代器 ........................................439
字典视图可迭代对象 ........................................440
其他迭代话题 ........................................441
本章小结 ........................................442
本章习题 ........................................442
习题解答 ........................................442
第15章 文档 ........................................ 444
Python文档资源 ........................................444
#注释 ........................................445
dir函数 ........................................445
文档字符串:__doc__ ........................................447
PyDoc:help函数 ........................................450
PyDoc:HTML报告 ........................................453
改变PyDoc的颜色 ........................................456
超越文档字符串:Sphinx ........................................461
标准手册集........................................462
网络资源 ........................................463
已出版的书籍 ........................................463
常见代码编写陷阱 ........................................463
本章小结 ........................................465
本章习题 ........................................466
习题解答 ........................................466
第三部分练习题 ........................................467
第四部分 函数和生成器
第16章 函数基础 ........................................ 473
为何使用函数 ........................................474
编写函数 ........................................475
def语句 ........................................476
def语句执行于运行时 ........................................477
第一个示例:定义和调用 ........................................478
定义 ........................................478
调用 ........................................478
Python中的多态 ........................................479
第二个示例:寻找序列的交集 ........................................480
定义 ........................................480
调用 ........................................481
重访多态 ........................................482
局部变量 ........................................482
本章小结 ........................................483
本章习题 ........................................483
习题解答 ........................................483
第17章 作用域 ........................................ 485
Python作用域基础 ........................................485
作用域细节........................................486
变量名解析:LEGB规则 ........................................488
作用域实例........................................490
内置作用域........................................491
打破Python 2.X的小宇宙 ........................................494
global语句 ........................................494
程序设计:最少化全局变量 ........................................495
程序设计:最小化跨文件的修改 ........................................497
其他访问全局变量的方式 ........................................498
作用域和嵌套函数 ........................................499
嵌套作用域的细节 ........................................500
嵌套作用域举例 ........................................500
工厂函数:闭包 ........................................501
使用默认值参数来保存外层作用域的状态 ........................................503
Python 3.X中的nonlocal语句 ........................................507
nonlocal基础 ........................................508
nonlocal应用 ........................................509
为什么选nonlocal?状态保持备选项 ........................................ 511
nonlocal变量的状态:仅适用于Python 3.X ........................................ 511
全局变量的状态:只有一份副本 ........................................512
类的状态:显式属性(预习) ........................................513
函数属性的状态:Python 3.X和Python 2.X的异同 .....................................514
请留意:定制open ........................................516
本章小结 ........................................518
本章习题 ........................................518
习题解答 ........................................520
第18章 参数 ........................................ 521
参数传递基础 ........................................521
参数和共享引用 ........................................522
避免修改可变参数 ........................................524
模拟输出参数和多重结果 ........................................525
特殊的参数匹配模式 ........................................526
参数匹配基础 ........................................526
参数匹配语法 ........................................527
更深入的细节 ........................................528
关键字参数和默认值参数的示例 ........................................529
可变长参数的实例 ........................................532
Python 3.X的keyword-only参数 ........................................536
min提神小例 ........................................539
满分 ........................................540
附加分 ........................................541
结论 ........................................542
通用set函数 ........................................542
模拟Python 3.X print函数 ........................................544
使用keyword-only参数 ........................................546
请留意:关键字参数 ........................................547
本章小结 ........................................548
本章习题 ........................................548
习题解答 ........................................549
第19章 函数的高级话题 ........................................ 550
函数设计概念 ........................................550
递归函数 ........................................552
用递归求和........................................552
编码替代方案 ........................................553
循环语句vs递归 ........................................554
处理任意结构 ........................................555
函数对象:属性和注解 ........................................558
间接函数调用:“一等”对象 ........................................559
函数自省 ........................................560
函数属性 ........................................561
Python 3.X中的函数注解 ........................................562
匿名函数:lambda........................................564
lambda表达式基础 ........................................564
为什么使用lambda ........................................566
如何(不)让Python代码变得晦涩难懂 ........................................568
作用域:lambda也能嵌套 ........................................569
请留意:lambda回调 ........................................570
函数式编程工具 ........................................570
在可迭代对象上映射函数:map ........................................571
选择可迭代对象中的元素:filter ........................................573
合并可迭代对象中的元素:reduce ........................................573
本章小结 ........................................575
本章习题 ........................................575
习题解答 ........................................575
第20章 推导和生成 ........................................ 577
列表推导与函数式编程工具 ........................................577
列表推导与map ........................................578
使用filter增加测试和循环嵌套 ........................................579
示例:列表推导与矩阵 ........................................582
不要滥用列表推导:简单胜于复杂(KISS) ........................................584
请留意:列表推导和map ........................................585
生成器函数与表达式 ........................................587
生成器函数:yield vs return ........................................587
生成器表达式:当可迭代对象遇见推导语法 ........................................592
生成器函数vs生成器表达式 ........................................597
生成器是单遍迭代对象 ........................................599
Python 3.3的yield from扩展 ........................................600
内置类型、工具和类中的值生成 ........................................601
实例:生成乱序序列 ........................................604
不要过度使用生成器:明确胜于隐晦(EIBTI) ........................................609
示例:用迭代工具模拟zip和map ........................................ 611
为什么你要注意:单遍迭代 ........................................616
推导语法总结 ........................................617
作用域及推导变量 ........................................617
理解集合推导和字典推导 ........................................619
集合与字典的扩展推导语法 ........................................620
本章小结 ........................................621
本章习题 ........................................621
习题解答 ........................................621
第21章 基准测试 ........................................ 623
计时迭代可选方案 ........................................623
自己编写的计时模块 ........................................624
3.3版本中新的计时器调用 ........................................627
计时脚本 ........................................628
计时结果 ........................................630
计时模块可选方案 ........................................633
其他建议 ........................................636
用timeit为迭代和各种Python计时 ........................................637
timeit基础用法 ........................................637
基准测试模块和脚本:timeit ........................................641
基准测试脚本结果 ........................................643
基准测试的更多乐趣 ........................................646
其他基准测试主题:pystones ........................................650
函数陷阱 ........................................651
局部变量是被静态检测的 ........................................651
默认值参数和可变对象 ........................................653
没有return语句的函数 ........................................655
其他函数陷阱 ........................................655
本章小结 ........................................656
本章习题 ........................................656
习题解答 ........................................656
第四部分练习题 ........................................657
第五部分 模块和包
第22章 模块:宏伟蓝图 ........................................ 663
为什么使用模块 ........................................664
Python程序架构 ........................................664
如何组织一个程序 ........................................665
导入和属性........................................665
标准库模块........................................667
import如何工作 ........................................667
1.搜索 ........................................668
2.编译(可选) ........................................668
3.运行 ........................................669
字节码文件:Python 3.2及以上版本的__pycache__ ........................................670
实际应用中的字节码文件模型 ........................................671
模块搜索路径 ........................................672
配置搜索路径 ........................................674
搜索路径的变化 ........................................674
sys.path列表 ........................................675
模块文件选择 ........................................676
第三方工具:distutils ........................................678
本章小结 ........................................678
本章习题 ........................................679
习题解答 ........................................679
第23章 模块代码编写基础 ........................................ 680
模块的创建 ........................................680
模块文件名........................................680
其他种类的模块 ........................................681
模块的使用 ........................................681
import语句 ........................................681
from语句 ........................................682
from *语句 ........................................682
导入只发生一次 ........................................683
import和from是赋值语句 ........................................684
import和from的等价性 ........................................685
from语句潜在的陷阱 ........................................686
模块命名空间 ........................................687
文件产生命名空间 ........................................687
命名空间字典:__dict__ ........................................689
属性名称的点号运算 ........................................689
导入与作用域 ........................................690
命名空间的嵌套 ........................................691
重新加载模块 ........................................692
reload基础 ........................................693
reload示例 ........................................694
请留意:模块重新加载 ........................................695
本章小结 ........................................696
本章习题 ........................................696
习题解答 ........................................696
第24章 模块包 ........................................ 698
包导入基础 ........................................698
包和搜索路径设置 ........................................699
__init__.py包文件 ........................................700
包导入示例 ........................................702
包的from语句与包的import语句 ........................................703
为什么要使用包导入 ........................................704
三个系统的故事 ........................................705
请留意:模块包 ........................................707
包相对导入 ........................................708
Python 3.X中的变化 ........................................708
相对导入基础知识 ........................................709
为什么使用相对导入 ........................................710
相对导入的适用情况 ........................................713
模块查找规则总结 ........................................713
相对导入的实际应用 ........................................714
包相对导入的陷阱:混合使用 ........................................719
Python 3.3中的命名空间包 ........................................724
命名空间包的语义 ........................................725
对常规包的影响:可选的__init__.py ........................................726
命名空间包的实际应用 ........................................727
命名空间包嵌套 ........................................729
文件仍然优先于路径 ........................................730
本章小结 ........................................732
本章习题 ........................................732
习题解答 ........................................733
第25章 高级模块话题 ........................................ 734
模块设计概念 ........................................734
模块中的数据隐藏 ........................................736
使 * 的破坏最小化:_X和__all__ ........................................736
启用未来语言特性:__future__ ........................................737
混合使用模式:__name__和__main__ ........................................738
以__name__进行单元测试 ........................................739
示例:双模式代码 ........................................740
货币符号:Unicode的应用 ........................................743
文档字符串:模块文档的应用 ........................................745
修改模块搜索路径 ........................................746
import语句和from语句的as扩展 ........................................747
示例:模块即是对象 ........................................748
用名称字符串导入模块 ........................................750
运行代码字符串 ........................................751
直接调用:两种方式 ........................................751
示例:传递性模块重载译注1 ........................................ 752
递归重载器........................................752
另外的代码........................................756
模块陷阱 ........................................759
模块名称冲突:包和包相对导入 ........................................760
顶层代码中语句次序很重要 ........................................760
from复制名称,而不是链接 ........................................761
from *会让变量含义模糊化 ........................................762
reload不能作用于from导入 ........................................762
reload、from以及交互式测试 ........................................763
递归形式的from导入可能无法工作 ........................................764
本章小结 ........................................765
本章习题 ........................................766
习题解答 ........................................766
第五部分练习题 ........................................766
---------------------------Python 3标准库---------------------------
译者序
前言
第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 函数与Struct类 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 fractions:有理数 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章 数据持久存储与交换 310
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 dbm: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.etree.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 json: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.argv的命令 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 fileinput:命令行过滤器框架 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 pdb:交互式调试工具 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 ensurepip:安装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 gc:垃圾回收器 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
组件集成 ........................................30
数据库编程........................................30
快速原型 ........................................31
数值计算和科学计算编程 ........................................31
更多内容:游戏、图像、数据挖掘、机器人、Excel等 ................................31
Python如何开发并获得支持 ........................................32
开源的权衡........................................33
Python有哪些技术上的优点 ........................................33
面向对象和函数式 ........................................33
免费 ........................................34
可移植 ........................................34
功能强大 ........................................35
可混合 ........................................36
相对简单易用 ........................................36
相对简单易学 ........................................37
以Monty Python命名 ........................................37
Python和其他语言比较起来怎么样 ........................................38
本章小结 ........................................39
本章习题 ........................................39
习题解答 ........................................40
Python是工程,不是艺术 ........................................41
第2章 Python如何运行程序 ........................................ 43
Python解释器简介 ........................................43
程序执行 ........................................45
程序员的视角 ........................................45
Python的视角 ........................................46
执行模型的变体 ........................................48
Python的各种实现 ........................................49
执行优化工具 ........................................52
冻结二进制文件 ........................................53
未来的可能性 ........................................54
本章小结 ........................................55
本章习题 ........................................55
习题解答 ........................................56
第3章 你应如何运行程序 ........................................ 57
交互式命令行模式 ........................................57
开始一个交互式会话 ........................................57
Windows平台上的交互式命令行在哪里 ........................................59
系统路径 ........................................59
Python 3.3中的新Windows选项:PATH和启动器 ........................................60
运行的位置:代码目录 ........................................61
不需要输入的内容:提示符和注释 ........................................62
交互式地运行代码 ........................................63
为什么要使用交互式命令行模式 ........................................64
使用注意:交互命令行模式 ........................................65
系统命令行和文件 ........................................67
第一段脚本........................................68
使用命令行运行文件 ........................................69
不同的命令行使用方式 ........................................70
使用注意:命令行和文件 ........................................71
UNIX风格可执行脚本:#! ........................................72
UNIX脚本基础 ........................................72
UNIX env查找技巧 ........................................73
Python 3.3 Windows启动器:Windows也有#!了 ........................................73
点击文件图标 ........................................75
图标点击基础知识 ........................................75
在Windows上点击图标 ........................................76
Windows上输入的技巧 ........................................77
其他图标点击的限制 ........................................79
模块导入和重载 ........................................79
导入和重载基础知识 ........................................80
模块的宏观视角:属性 ........................................82
使用注意:import和reload ........................................85
使用exec运行模块文件 ........................................85
IDLE用户界面 ........................................86
IDLE启动细节 ........................................87
IDLE基础用法 ........................................88
IDLE功能特性 ........................................89
高级IDLE工具 ........................................90
使用注意:IDLE ........................................90
其他IDE ........................................92
其他启动选项 ........................................93
嵌入式调用........................................93
冻结二进制可执行文件 ........................................94
文本编辑器启动方式 ........................................94
其他的启动方式 ........................................95
未来的可能........................................95
应该选用哪种方式 ........................................95
调试Python代码 ........................................96
本章小结 ........................................97
本章习题 ........................................97
习题解答 ........................................98
第一部分练习题 ........................................99
第二部分 类型和运算
第4章 介绍Python对象类型 ........................................ 105
Python知识结构 ........................................105
为什么要使用内置类型 ........................................106
Python核心数据类型 ........................................107
数字 ........................................108
字符串 ........................................ 110
序列操作 ........................................ 110
不可变性 ........................................ 112
特定类型的方法 ........................................ 113
寻求帮助 ........................................ 115
字符串编程的其他方式 ........................................ 116
Unicode字符串 ........................................ 117
模式匹配 ........................................ 119
列表 ........................................120
序列操作 ........................................120
特定的操作........................................121
边界检查 ........................................121
嵌套 ........................................122
推导 ........................................122
字典 ........................................125
映射操作 ........................................125
重访嵌套 ........................................126
不存在的键:if 测试 ........................................128
键的排序:for 循环 ........................................129
迭代和优化........................................131
元组 ........................................132
为什么要使用元组 ........................................133
文件 ........................................133
二进制字节文件 ........................................134
Unicode文本文件 ........................................135
其他类文件工具 ........................................137
其他核心类型 ........................................137
如何破坏代码的灵活性 ........................................139
用户定义的类 ........................................140
剩余的内容........................................141
本章小结 ........................................141
本章习题 ........................................141
习题解答 ........................................142
第5章 数值类型 ........................................ 143
数值类型基础知识 ........................................143
数值字面量........................................144
内置数值工具 ........................................146
Python表达式运算符 ........................................146
数字的实际应用 ........................................151
变量与基础表达式 ........................................151
数值的显示格式 ........................................153
str和repr显示格式 ........................................154
普通比较与链式比较 ........................................154
除法:经典除法、向下取整除法和真除法 ........................................156
整数精度 ........................................160
复数 ........................................160
十六进制、八进制和二进制:字面量与转换 ........................................161
按位操作 ........................................163
其他内置数值工具 ........................................164
其他数值类型 ........................................167
小数类型 ........................................167
分数类型 ........................................169
集合 ........................................173
布尔型 ........................................180
数值扩展 ........................................181
本章小结 ........................................182
本章习题 ........................................182
习题解答 ........................................182
第6章 动态类型 ........................................ 184
缺少声明语句的情况 ........................................184
变量、对象和引用 ........................................184
类型属于对象,而不是变量 ........................................186
对象的垃圾收集 ........................................187
关于Python垃圾回收的更多讨论 ........................................188
共享引用 ........................................189
共享引用和在原位置修改 ........................................190
共享引用和相等 ........................................192
动态类型随处可见 ........................................193
“弱”引用........................................194
本章小结 ........................................194
本章习题 ........................................194
习题解答 ........................................195
第7章 字符串基础 ........................................ 196
本章范围 ........................................196
Unicode简介 ........................................197
字符串基础 ........................................197
字符串字面量 ........................................199
单引号和双引号字符串是一样的 ........................................200
转义序列代表特殊字符 ........................................200
原始字符串阻止转义 ........................................203
三引号编写多行块字符串 ........................................205
实际应用中的字符串 ........................................206
基本操作 ........................................206
索引和分片........................................207
请留意:分片 ........................................ 211
字符串转换工具 ........................................212
修改字符串I ........................................214
字符串方法 ........................................216
方法调用语法 ........................................216
字符串的方法 ........................................217
字符串方法示例:修改字符串II ........................................218
字符串方法示例:解析文本 ........................................220
实际应用中的其他常见字符串方法 ........................................220
原始string模块的函数(在Python 3.X中删除) ........................................221
字符串格式化表达式 ........................................223
格式化表达式基础 ........................................224
高级格式化表达式语法 ........................................225
高级格式化表达式举例 ........................................226
基于字典的格式化表达式 ........................................227
字符串格式化方法调用 ........................................228
字符串格式化方法基础 ........................................228
添加键、属性和偏移量 ........................................229
高级格式化方法语法 ........................................230
高级格式化方法举例 ........................................231
与%格式化表达式比较........................................233
为什么使用格式化方法 ........................................236
通用类型分类 ........................................241
同一分类中的类型共享同一个操作集........................................241
可变类型能够在原位置修改 ........................................242
本章小结 ........................................242
本章习题 ........................................243
习题解答 ........................................243
第8章 列表与字典 ........................................ 245
列表 ........................................245
列表的实际应用 ........................................248
基本列表操作 ........................................248
列表迭代和推导 ........................................248
索引、分片和矩阵 ........................................249
原位置修改列表 ........................................250
字典 ........................................256
字典的实际应用 ........................................258
字典的基本操作 ........................................258
原位置修改字典 ........................................259
其他字典方法 ........................................260
示例:电影数据库 ........................................262
字典用法注意事项 ........................................263
创建字典的其他方式 ........................................267
请留意:字典vs列表 ........................................268
Python 3.X和2.7中的字典变化 ........................................269
请留意:字典接口 ........................................276
本章小结 ........................................277
本章习题 ........................................277
习题解答 ........................................277
第9章 元组、文件与其他核心类型 ............................... 279
元组 ........................................280
元组的实际应用 ........................................281
为什么有了列表还要元组 ........................................283
重访记录:有名元组 ........................................284
文件 ........................................286
打开文件 ........................................287
使用文件 ........................................288
文件的实际应用 ........................................289
文本和二进制文件:一个简要的故事........................................290
在文件中存储Python对象:转换 ........................................291
存储Python原生对象:pickle ........................................293
用JSON格式存储Python对象 ........................................294
存储打包二进制数据:struct ........................................296
文件上下文管理器 ........................................297
其他文件工具 ........................................297
核心类型复习与总结 ........................................299
请留意:运算符重载 ........................................300
对象灵活性........................................300
引用vs复制 ........................................301
比较、等价性和真值 ........................................303
Python中True和False的含义 ........................................307
Python的类型层次 ........................................309
类型的对象........................................309
Python中的其他类型 ........................................ 311
内置类型陷阱 ........................................ 311
赋值创建引用,而不是复制 ........................................ 311
重复会增加层次深度 ........................................312
注意循环数据结构 ........................................313
不可变类型不可以在原位置改变 ........................................313
本章小结 ........................................314
本章习题 ........................................314
习题解答 ........................................315
第二部分练习题 ........................................315
第三部分 语句和语法
第10章 Python语句简介........................................ 321
重温Python的知识结构 ........................................321
Python的语句 ........................................322
两种不同的if ........................................324
Python增加的元素 ........................................325
Python删除的元素 ........................................325
为什么采用缩进语法 ........................................327
几种特殊情况 ........................................329
简短示例:交互式循环 ........................................331
一个简单的交互式循环 ........................................331
对用户输入做数学运算 ........................................333
通过测试输入数据来处理错误 ........................................334
用try语句处理错误 ........................................335
嵌套三层深的代码 ........................................337
本章小结 ........................................338
本章习题 ........................................338
习题解答 ........................................338
第11章 赋值、表达式和打印 ....................................... 340
赋值语句 ........................................340
赋值语句形式 ........................................341
序列赋值 ........................................342
Python 3.X中的扩展序列解包 ........................................345
多目标赋值........................................349
增量赋值 ........................................350
变量命名规则 ........................................353
Python中的废弃协议 ........................................355
表达式语句 ........................................356
表达式语句和原位置修改 ........................................358
打印操作 ........................................358
Python 3.X的print函数 ........................................359
Python 2.X的print语句 ........................................362
打印流重定向 ........................................363
版本中立的打印 ........................................367
为什么你要注意:print和stdout ........................................369
本章小结 ........................................370
本章习题 ........................................370
习题解答 ........................................370
第12章 if测试和语法规则 ........................................ 372
if语句........................................372
一般形式 ........................................372
基础示例 ........................................373
多路分支 ........................................373
复习Python语法规则 ........................................375
代码块分隔符:缩进规则 ........................................377
语句分隔符:行与行间连接符 ........................................378
一些特殊情况 ........................................379
真值和布尔测试 ........................................381
if/else三元表达式 ........................................383
请留意:布尔值 ........................................384
本章小结 ........................................386
本章习题 ........................................386
习题解答 ........................................386
第13章 while循环和for循环 ........................................ 387
while循环 ........................................387
一般形式 ........................................387
示例 ........................................388
break、continue、pass和循环的else ........................................389
一般循环形式 ........................................389
pass ........................................389
continue ........................................391
break ........................................391
循环的else ........................................392
请留意:仿真C 语言的while循环 ........................................393
for循环 ........................................394
一般形式 ........................................394
示例 ........................................395
请留意:文件扫描器 ........................................400
编写循环的技巧 ........................................402
计数器循环:range ........................................402
序列扫描:while和range vs for ........................................403
序列乱序器:range和len ........................................404
非穷尽遍历:range vs分片 ........................................405
修改列表:range vs推导 ........................................406
并行遍历:zip和map ........................................407
同时给出偏移量和元素:enumerate ........................................410
请留意:shell命令及其他 ........................................ 411
本章小结 ........................................414
本章习题 ........................................414
习题解答 ........................................414
第14章 迭代和推导 ........................................ 416
迭代器:初次探索 ........................................417
迭代协议:文件迭代器 ........................................417
手动迭代:iter和next ........................................420
其他内置类型可迭代对象 ........................................423
列表推导:初次深入探索 ........................................425
列表推导基础 ........................................426
在文件上使用列表推导 ........................................427
扩展的列表推导语法 ........................................428
其他迭代上下文 ........................................430
Python 3.X新增的可迭代对象 ........................................435
对Python 2.X版本代码的影响:利与弊 ........................................435
range可迭代对象 ........................................436
map、zip和filter可迭代对象 ........................................437
多遍迭代器vs单遍迭代器 ........................................439
字典视图可迭代对象 ........................................440
其他迭代话题 ........................................441
本章小结 ........................................442
本章习题 ........................................442
习题解答 ........................................442
第15章 文档 ........................................ 444
Python文档资源 ........................................444
#注释 ........................................445
dir函数 ........................................445
文档字符串:__doc__ ........................................447
PyDoc:help函数 ........................................450
PyDoc:HTML报告 ........................................453
改变PyDoc的颜色 ........................................456
超越文档字符串:Sphinx ........................................461
标准手册集........................................462
网络资源 ........................................463
已出版的书籍 ........................................463
常见代码编写陷阱 ........................................463
本章小结 ........................................465
本章习题 ........................................466
习题解答 ........................................466
第三部分练习题 ........................................467
第四部分 函数和生成器
第16章 函数基础 ........................................ 473
为何使用函数 ........................................474
编写函数 ........................................475
def语句 ........................................476
def语句执行于运行时 ........................................477
第一个示例:定义和调用 ........................................478
定义 ........................................478
调用 ........................................478
Python中的多态 ........................................479
第二个示例:寻找序列的交集 ........................................480
定义 ........................................480
调用 ........................................481
重访多态 ........................................482
局部变量 ........................................482
本章小结 ........................................483
本章习题 ........................................483
习题解答 ........................................483
第17章 作用域 ........................................ 485
Python作用域基础 ........................................485
作用域细节........................................486
变量名解析:LEGB规则 ........................................488
作用域实例........................................490
内置作用域........................................491
打破Python 2.X的小宇宙 ........................................494
global语句 ........................................494
程序设计:最少化全局变量 ........................................495
程序设计:最小化跨文件的修改 ........................................497
其他访问全局变量的方式 ........................................498
作用域和嵌套函数 ........................................499
嵌套作用域的细节 ........................................500
嵌套作用域举例 ........................................500
工厂函数:闭包 ........................................501
使用默认值参数来保存外层作用域的状态 ........................................503
Python 3.X中的nonlocal语句 ........................................507
nonlocal基础 ........................................508
nonlocal应用 ........................................509
为什么选nonlocal?状态保持备选项 ........................................ 511
nonlocal变量的状态:仅适用于Python 3.X ........................................ 511
全局变量的状态:只有一份副本 ........................................512
类的状态:显式属性(预习) ........................................513
函数属性的状态:Python 3.X和Python 2.X的异同 .....................................514
请留意:定制open ........................................516
本章小结 ........................................518
本章习题 ........................................518
习题解答 ........................................520
第18章 参数 ........................................ 521
参数传递基础 ........................................521
参数和共享引用 ........................................522
避免修改可变参数 ........................................524
模拟输出参数和多重结果 ........................................525
特殊的参数匹配模式 ........................................526
参数匹配基础 ........................................526
参数匹配语法 ........................................527
更深入的细节 ........................................528
关键字参数和默认值参数的示例 ........................................529
可变长参数的实例 ........................................532
Python 3.X的keyword-only参数 ........................................536
min提神小例 ........................................539
满分 ........................................540
附加分 ........................................541
结论 ........................................542
通用set函数 ........................................542
模拟Python 3.X print函数 ........................................544
使用keyword-only参数 ........................................546
请留意:关键字参数 ........................................547
本章小结 ........................................548
本章习题 ........................................548
习题解答 ........................................549
第19章 函数的高级话题 ........................................ 550
函数设计概念 ........................................550
递归函数 ........................................552
用递归求和........................................552
编码替代方案 ........................................553
循环语句vs递归 ........................................554
处理任意结构 ........................................555
函数对象:属性和注解 ........................................558
间接函数调用:“一等”对象 ........................................559
函数自省 ........................................560
函数属性 ........................................561
Python 3.X中的函数注解 ........................................562
匿名函数:lambda........................................564
lambda表达式基础 ........................................564
为什么使用lambda ........................................566
如何(不)让Python代码变得晦涩难懂 ........................................568
作用域:lambda也能嵌套 ........................................569
请留意:lambda回调 ........................................570
函数式编程工具 ........................................570
在可迭代对象上映射函数:map ........................................571
选择可迭代对象中的元素:filter ........................................573
合并可迭代对象中的元素:reduce ........................................573
本章小结 ........................................575
本章习题 ........................................575
习题解答 ........................................575
第20章 推导和生成 ........................................ 577
列表推导与函数式编程工具 ........................................577
列表推导与map ........................................578
使用filter增加测试和循环嵌套 ........................................579
示例:列表推导与矩阵 ........................................582
不要滥用列表推导:简单胜于复杂(KISS) ........................................584
请留意:列表推导和map ........................................585
生成器函数与表达式 ........................................587
生成器函数:yield vs return ........................................587
生成器表达式:当可迭代对象遇见推导语法 ........................................592
生成器函数vs生成器表达式 ........................................597
生成器是单遍迭代对象 ........................................599
Python 3.3的yield from扩展 ........................................600
内置类型、工具和类中的值生成 ........................................601
实例:生成乱序序列 ........................................604
不要过度使用生成器:明确胜于隐晦(EIBTI) ........................................609
示例:用迭代工具模拟zip和map ........................................ 611
为什么你要注意:单遍迭代 ........................................616
推导语法总结 ........................................617
作用域及推导变量 ........................................617
理解集合推导和字典推导 ........................................619
集合与字典的扩展推导语法 ........................................620
本章小结 ........................................621
本章习题 ........................................621
习题解答 ........................................621
第21章 基准测试 ........................................ 623
计时迭代可选方案 ........................................623
自己编写的计时模块 ........................................624
3.3版本中新的计时器调用 ........................................627
计时脚本 ........................................628
计时结果 ........................................630
计时模块可选方案 ........................................633
其他建议 ........................................636
用timeit为迭代和各种Python计时 ........................................637
timeit基础用法 ........................................637
基准测试模块和脚本:timeit ........................................641
基准测试脚本结果 ........................................643
基准测试的更多乐趣 ........................................646
其他基准测试主题:pystones ........................................650
函数陷阱 ........................................651
局部变量是被静态检测的 ........................................651
默认值参数和可变对象 ........................................653
没有return语句的函数 ........................................655
其他函数陷阱 ........................................655
本章小结 ........................................656
本章习题 ........................................656
习题解答 ........................................656
第四部分练习题 ........................................657
第五部分 模块和包
第22章 模块:宏伟蓝图 ........................................ 663
为什么使用模块 ........................................664
Python程序架构 ........................................664
如何组织一个程序 ........................................665
导入和属性........................................665
标准库模块........................................667
import如何工作 ........................................667
1.搜索 ........................................668
2.编译(可选) ........................................668
3.运行 ........................................669
字节码文件:Python 3.2及以上版本的__pycache__ ........................................670
实际应用中的字节码文件模型 ........................................671
模块搜索路径 ........................................672
配置搜索路径 ........................................674
搜索路径的变化 ........................................674
sys.path列表 ........................................675
模块文件选择 ........................................676
第三方工具:distutils ........................................678
本章小结 ........................................678
本章习题 ........................................679
习题解答 ........................................679
第23章 模块代码编写基础 ........................................ 680
模块的创建 ........................................680
模块文件名........................................680
其他种类的模块 ........................................681
模块的使用 ........................................681
import语句 ........................................681
from语句 ........................................682
from *语句 ........................................682
导入只发生一次 ........................................683
import和from是赋值语句 ........................................684
import和from的等价性 ........................................685
from语句潜在的陷阱 ........................................686
模块命名空间 ........................................687
文件产生命名空间 ........................................687
命名空间字典:__dict__ ........................................689
属性名称的点号运算 ........................................689
导入与作用域 ........................................690
命名空间的嵌套 ........................................691
重新加载模块 ........................................692
reload基础 ........................................693
reload示例 ........................................694
请留意:模块重新加载 ........................................695
本章小结 ........................................696
本章习题 ........................................696
习题解答 ........................................696
第24章 模块包 ........................................ 698
包导入基础 ........................................698
包和搜索路径设置 ........................................699
__init__.py包文件 ........................................700
包导入示例 ........................................702
包的from语句与包的import语句 ........................................703
为什么要使用包导入 ........................................704
三个系统的故事 ........................................705
请留意:模块包 ........................................707
包相对导入 ........................................708
Python 3.X中的变化 ........................................708
相对导入基础知识 ........................................709
为什么使用相对导入 ........................................710
相对导入的适用情况 ........................................713
模块查找规则总结 ........................................713
相对导入的实际应用 ........................................714
包相对导入的陷阱:混合使用 ........................................719
Python 3.3中的命名空间包 ........................................724
命名空间包的语义 ........................................725
对常规包的影响:可选的__init__.py ........................................726
命名空间包的实际应用 ........................................727
命名空间包嵌套 ........................................729
文件仍然优先于路径 ........................................730
本章小结 ........................................732
本章习题 ........................................732
习题解答 ........................................733
第25章 高级模块话题 ........................................ 734
模块设计概念 ........................................734
模块中的数据隐藏 ........................................736
使 * 的破坏最小化:_X和__all__ ........................................736
启用未来语言特性:__future__ ........................................737
混合使用模式:__name__和__main__ ........................................738
以__name__进行单元测试 ........................................739
示例:双模式代码 ........................................740
货币符号:Unicode的应用 ........................................743
文档字符串:模块文档的应用 ........................................745
修改模块搜索路径 ........................................746
import语句和from语句的as扩展 ........................................747
示例:模块即是对象 ........................................748
用名称字符串导入模块 ........................................750
运行代码字符串 ........................................751
直接调用:两种方式 ........................................751
示例:传递性模块重载译注1 ........................................ 752
递归重载器........................................752
另外的代码........................................756
模块陷阱 ........................................759
模块名称冲突:包和包相对导入 ........................................760
顶层代码中语句次序很重要 ........................................760
from复制名称,而不是链接 ........................................761
from *会让变量含义模糊化 ........................................762
reload不能作用于from导入 ........................................762
reload、from以及交互式测试 ........................................763
递归形式的from导入可能无法工作 ........................................764
本章小结 ........................................765
本章习题 ........................................766
习题解答 ........................................766
第五部分练习题 ........................................766
---------------------------Python 3标准库---------------------------
译者序
前言
第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 函数与Struct类 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 fractions:有理数 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章 数据持久存储与交换 310
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 dbm: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.etree.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 json: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.argv的命令 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 fileinput:命令行过滤器框架 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 pdb:交互式调试工具 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 ensurepip:安装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 gc:垃圾回收器 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
媒体评论
---------------------------Python学习手册(原书第5版)---------------------------
本书将帮助你使用Python编写出高质量、高效的并且易于与其他语言和工具集成的代码。本书根据Python专家Mark Lutz的著名培训课程编写而成,是易于掌握和自学的Python教程。
本书每一章都对Python语言的关键内容做单独讲解,并且配有章后习题、编程练习及详尽的解答,还配有大量注释的示例以及图表,便于你学习新的技能并巩固加深自己的理解。第5版基于Python2.7和3.3版本,同时也适用于其他Python版本。无论你是编程新手还是其他编程语言的资深开发者,本书都会是你学习Python的理想选择。
本书主要内容
? 学习Python的主要内置对象类型,如数字、列表和字典。
? 使用Python语句创建和处理对象,并学习Python的通用语法模型。
? 使用函数减少代码冗余,使用包代码结构实现代码重用
? 学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件
? 学习类,即Python用于组织代码的面向对象编程工具
? 使用Python的异常处理模型和开发工具编写大型程序
? 学习高级Python工具,包括装饰器、描述符、元类和Unicode处理等
“对于那些想要开始使用Python编程的朋友,本书是我所推荐图书中的首选。”
——Doug Hellmann
Racemi公司高级软件工程师
Mark Lutz是一位世界级的Python培训讲师。他是Python畅销书籍的作者,同时从1992年起就成为Python社区的引领者。Mark有着30余年的软件开发经验,也是《Python编程》《Python袖珍指南》等书的作者。
.
---------------------------Python 3标准库---------------------------
Doug这些方法的过人之处在于,只需要每周15分钟,只需要有积极性,任何程序员都能掌握Python标准库。Doug带你踏上的Python标准库之旅会帮助你打开领略Python强大功能的大门。
——Raymond HettingerPython核心开发人员
Python 3标准库包含数百个模块,可以用来与操作系统、解释器和Internet交互——所有这些模块都已经过充分测试,可以直接在日常开发中使用。现在,Python专家Doug Hellmann通过简洁的源代码和输出示例,全面介绍了Python 3.x库的几乎每一个重要方面。书中提供了大量示例来充分展示每一个特性,这些示例经过精心设计,以便于学习和重用。
在本书中,你会看到用来处理文本、数据结构、算法、日期/时间、数学计算、文件系统、持久存储、数据交换、压缩、归档、加密、进程/线程、网络通信、Internet功能、Email、开发和语言工具、运行时、包等各个方面的实用代码。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的教程和参考手册。
书中介绍了Python 3.x新增的库、重大的功能变化,以及新的布局和命名约定。此外,书中还提供了专家级移植指导,可帮助你将代码从Python 2.x标准库模块移植到相应的Python 3.x标准库模块。
本书涵盖以下内容:
用string、textwrap、re(正则表达式)和difflib处理文本
使用数据结构:enum、collections、array、heapq、queue、struct、copy等
使用functools、itertools和contextlib妥善而简洁地实现算法
处理日期/时间和高级数学任务
归档和数据压缩
理解数据交换和持久存储,包括json、dbm和sqlite
通过加密实现消息签名和验证
利用进程和线程管理并发操作
测试、调试、编译、性能分析、语言、导入和打包工具
控制运行时与解释器或环境的交互
---------------------------Python 3标准库---------------------------
Doug这些方法的过人之处在于,只需要每周15分钟,只需要有积极性,任何程序员都能掌握Python标准库。Doug带你踏上的Python标准库之旅会帮助你打开领略Python强大功能的大门。
——Raymond HettingerPython核心开发人员
Python 3标准库包含数百个模块,可以用来与操作系统、解释器和Internet交互——所有这些模块都已经过充分测试,可以直接在日常开发中使用。现在,Python专家Doug Hellmann通过简洁的源代码和输出示例,全面介绍了Python 3.x库的几乎每一个重要方面。书中提供了大量示例来充分展示每一个特性,这些示例经过精心设计,以便于学习和重用。
在本书中,你会看到用来处理文本、数据结构、算法、日期/时间、数学计算、文件系统、持久存储、数据交换、压缩、归档、加密、进程/线程、网络通信、Internet功能、Email、开发和语言工具、运行时、包等各个方面的实用代码。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的教程和参考手册。
书中介绍了Python 3.x新增的库、重大的功能变化,以及新的布局和命名约定。此外,书中还提供了专家级移植指导,可帮助你将代码从Python 2.x标准库模块移植到相应的Python 3.x标准库模块。
本书涵盖以下内容:
用string、textwrap、re(正则表达式)和difflib处理文本
使用数据结构:enum、collections、array、heapq、queue、struct、copy等
使用functools、itertools和contextlib妥善而简洁地实现算法
处理日期/时间和高级数学任务
归档和数据压缩
理解数据交换和持久存储,包括json、dbm和sqlite
通过加密实现消息签名和验证
利用进程和线程管理并发操作
测试、调试、编译、性能分析、语言、导入和打包工具
控制运行时与解释器或环境的交互
系列图书推荐
Swift人工智能实战:从基础理论到AI驱动的应用程序开发
- ¥139.00
- ¥97.30
- Swift人工智能实战:从基础..
社交网站的数据挖掘与分析(原书第3版)
- ¥119.00
- ¥77.35
- 社交网站的数据挖掘与分析..
基于SAP的企业级实用数据分析
- ¥99.00
- ¥69.30
- 基于SAP的企业级实用数据..
Kubernetes实战
- ¥99.00
- ¥49.50
- Kubernetes实战
[套装书]Kubernetes实战+Kubernetes微服务实战(2册)
- ¥218.00
- ¥109.00
- [套装书]Kubernetes实战+..
同类热销商品
Java编程思想(第4版)
- ¥108.00
- ¥75.60
- Java编程思想(第4版)
GPU高性能编程CUDA实战[图书]
- ¥39.00
- ¥39.00
- GPU高性能编程CUDA实战[图..
算法导论(原书第3版)
- ¥128.00
- ¥89.60
- 算法导论(原书第3版)
Linux高性能服务器编程[按需印刷]
- ¥69.00
- ¥69.00
- Linux高性能服务器编程[按..
计算机网络:自顶向下方法(原书第7版)
- ¥89.00
- ¥62.30
- 计算机网络:自顶向下方法..