目录
译者序前言1章 文本 11.1 string:文本常量和模板 11.1.1 函数 11.1.2 模板 21.1.3 模板 31.1.4 Formatter 51.1.5 常量 51.2 textwrap:格式化文本段落 61.2.1 示例数据 61.2.2 填充段落 71.2.3 去除现有的缩进 71.2.4 结合dedent和f?ill 81.2.5 缩进块 81.2.6 悬挂缩进 101.2.7 截断长文本 101.3 re:正则表达式 111.3.1 查找文本中的模式 111.3.2 编译表达式 121.3.3 多重匹配 131.3.4 模式语法 141.3.5 搜索 221.3.6 用组解析匹配 241.3.7 搜索选项 291.3.8 前向或后向 351.3.9 自引用表达式 381.3.10 用模式修改字符串 421.3.11 利用模式拆分 441.4 diff?lib:比较序列 461.4.1 比较文本体 471.4.2 无用数据 491.4.3 比较任意类型 50第2章 数据结构 522.1 enum:枚举类型 532.1.1 创建枚举 532.1.2 迭代 532.1.3 比较Enum 542.1.4 枚举值 552.1.5 通过编程创建枚举 562.1.6 非整数成员值 582.2 collections:容器数据类型 602.2.1 ChainMap:搜索多个字典 602.2.2 Counter:统计可散列的对象 632.2.3 defaultdict:缺少的键返回一个默认值 662.2.4 deque:双端队列 672.2.5 namedtuple:带命名字段的元组子类 702.2.6 OrderedDict:记住向字典中增加键的顺序 742.2.7 collections.abc:容器的抽象基类 762.3 数组:固定类型数据序列 782.3.1 初始化 782.3.2 处理数组 792.3.3 数组和文件 792.3.4 候选字节顺序 802.4 heapq:堆排序算法 812.4.1 示例数据 812.4.2 创建堆 822.4.3 访问堆的内容 832.4.4 堆的数据极值 852.4.5 高效合并有序序列 852.5 bisect:维护有序列表 862.5.1 有序插入 862.5.2 处理重复 872.6 queue:线程安全的FIFO实现 882.6.1 基本FIFO队列 882.6.2 LIFO队列 892.6.3 优先队列 892.6.4 构建一个多线程播客客户程序 902.7 struct:二进制数据结构 932.7.1 函数与Struct类 932.7.2 打包和解包 932.7.3 字节序 942.7.4 缓冲区 952.8 weakref:对象的非引用 962.8.1 引用 962.8.2 引用回调 972.8.3 终化对象 982.8.4 代理 1002.8.5 缓存对象 1012.9 copy:复制对象 1032.9.1 浅副本 1032.9.2 深副本 1042.9.3 定制复制行为 1052.9.4 深副本中的递归 1062.10 pprint:美观打印数据结构 1072.10.1 打印 1082.10.2 格式化 1082.10.3 任意类 1092.10.4 递归 1102.10.5 嵌套输出 1102.10.6 控制输出宽度 111第3章 算法 1133.1 functools:管理函数的工具 1133.1.1 修饰符 1133.1.2 比较 1193.1.3 缓存 1223.1.4 缩减数据集 1253.1.5 泛型函数 1273.2 itertools:迭代器函数 1293.2.1 合并和分解迭代器 1293.2.2 转换输入 1323.2.3 生成新值 1333.2.4 过滤 1353.2.5 数据分组 1383.2.6 合并输入 1393.3 operator:内置操作符的函数接口 1443.3.1 逻辑操作 1443.3.2 比较操作符 1453.3.3 算术操作符 1453.3.4 序列操作符 1463.3.5 原地操作符 1483.3.6 属性和元素“获取方法” 1483.3.7 结合操作符和定制类 1503.4 contextlib:上下文管理器工具 1513.4.1 上下文管理器API 1513.4.2 上下文管理器作为函数修饰符 1533.4.3 从生成器到上下文管理器 1543.4.4 关闭打开的句柄 1563.4.5 忽略异常 1573.4.6 重定向输出流 1583.4.7 动态上下文管理器栈 159第4章 日期和时间 1664.1 time:时钟时间 1664.1.1 比较时钟 1664.1.2 墙上时钟时间 1674.1.3 单调时钟 1684.1.4 处理器时钟时间 1694.1.5 性能计数器 1704.1.6 时间组成 1704.1.7 处理时区 1714.1.8 解析和格式化时间 1724.2 datetime:日期和时间值管理 1744.2.1 时间 1744.2.2 日期 1754.2.3 timedelta 1774.2.4 日期算术运算 1784.2.5 比较值 1794.2.6 结合日期和时间 1794.2.7 格式化和解析 1804.2.8 时区 1824.3 calendar:处理日期 1834.3.1 格式化示例 1834.3.2 本地化环境 1854.3.3 计算日期 186第5章 数学运算 1885.1 decimal:定点数和浮点数的数学运算 1885.1.1 Decimal 1885.1.2 格式化 1895.1.3 算术运算 1905.1.4 特殊值 1915.1.5 上下文 1925.2 fractions:有理数 1965.2.1 创建Fraction实例 1975.2.2 算术运算 1985.2.3 近似值 1995.3 random:伪随机数生成器 1995.3.1 生成随机数 2005.3.2 指定种子 2005.3.3 保存状态 2015.3.4 随机整数 2025.3.5 选择随机元素 2035.3.6 排列 2035.3.7 采样 2055.
内容摘要
在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。
精彩内容
标准库会随每一版Python的发布而发布,其中包含数百个模块,为操作系统、解释器和互联网之间的交互提供了丰富的工具—所有这些模块都得到充分测试,可以用来作为应用开发的起点。本书会提供一些精选的例子,向你展示如何使用这些模块中常用的一些特性,正是这些特性使Python有了“内含动力”(batteries included)的座右铭。这些例子均取自颇受关注的“Python Module of the Week(PyMOTW)”博客系列。本书读者对象本书的读者应该是中等程度的Python程序员,所以尽管书中对所有源代码都做了讨论,却也只有少数情况会逐行给出解释。每一节都强调了模块的特性,并通过源代码以及独立的示例程序的输出来具体说明。本书还尽可能简洁地介绍了各个特性,使读者能够把重点放在所展示的模块或函数上,而不会因支持代码而分心。熟悉其他语言的有经验的程序员可以利用本书来了解Python,但本书并不是关于Python语言的入门读物。研究这些例子时,如果之前有编写Python程序的经验,那么一定会很有帮助。很多章节(比如介绍套接字网络编程或hmac加密的章节)还需要一些领域特定的知识。书中会提供解释这些例子所需的基本信息,不过由于标准库中模块涵盖的主题如此宽泛,所以不可能在一本书中全面地介绍每一个主题。在每个模块的讨论之后,还提供了一个推荐资源列表,大家可以进一步阅读这些资源,从中了解更多信息。推荐资源包括在线资源、RFC标准文档以及相关图书。Python 3与Python 2Python社区目前正在从Python 2向Python 3过渡。从主版本号可以看出,Python 2和Python 3有很多不兼容之处,而且这种不兼容不只是存在于语言中。Python 3中很多标准库模块都已经改名或者重新组织。Python开发社区认识到这种不兼容可能需要一个很长的过渡期,终Python库和工具的生态系统会更新为使用Python 3。尽管很多项目仍依赖于Python 2,但Python 2目前只接受安全更新,并且还计划在2020年前废弃。所有新特性都只能在Python 3版本中使用。编写可以同时用于这两个版本的程序可能很有难度,但并不是全无可能。这样做通常要求检查程序在哪个Python版本下运行,并且在导入时使用不同的模块名,或者在调用类或函数时使用不同的参数。在标准库之外,已经有大量工具可以简化这个过程。为了保证本书中的例子尽可能简洁,同时仍然只依赖于标准库,我们将主要强调Python 3。所有例子已经在Python 3.5上通过测试(写作本书时3.x系列的当前版本),如果不加修改,可能无法用于Python 2。要查看专门为使用Python 2而设计的例子,请参考本书的Python 2版本《Python标准库》。为了保证为每个例子提供清晰而简洁的描述,每一章不会过分强调Python 2和Python 3的差别。关于移植说明的附录会总结这两个版本之间一些大的区别,这部分内容会合理组织,以便能有效地帮助从Python 2到Python 3的移植。本书组织结构http://docs.python.org上提供了详尽的参考指南,而本书可以作为补充,提供功能完备的示例程序来展示这里介绍的特性。模块被分组为不同章节,以便轻松查找单个模块作为参考,并且可以按主题浏览进行更深层次的探讨。尽管可能不会一页页地从头到尾阅读本书,但如果你确实想要这么做,那么为了预备这种情况,本书也做了合理的组织,尽可能不要求你“提前参考”还没有介绍过的模块,不过要想避免这种情况是不可能的。下载示例代码原来的博客文章和示例代码可以在https://pymotw.com/3/找到。本书勘误可以从作者的网站(https://doughellmann.com/blog/the-python-3-standard-library-by-example/)下载。致谢如果没有大家的贡献和支持,这本书无可能问世。1997年Dick Wall让我一次接触到Python,那时我们正在ERDAS一起合作开发GIS软件。记得在发现这样一个如此简便易用的新的工具语言时,我便立刻喜欢上了它,而且还对公司不让我们用它来完成“实际工作”颇有不满。在接下来的所有工作中我大量使用了Python,而这正是因为Dick,我要感谢从那以后软件开发给我带来的快乐时光。Python核心开发小组创建了一个由语言、工具和库共同构建的健壮的生态系统,这些库在日益普及,也在不断发现新的应用领域。如果没有他们付出的宝贵时间,没有他们提供的丰富资源,我们可能还得花时间一次又一次地从头开始。本书中的材料初是一系列博客帖子。如果没有博客读者们异常积极的响应,这些文章不会更新成使用Python 3,这本新书也不可能出现。每个帖子都得到了Python社区成员的审阅和评论,有纠正,有建议,也有问题,这些评论促使我做出修改,这才有了你手上这本书。感谢大家日复一日地花时间来阅读我的博客,谢谢大家投入的时间和精力。本书的技术审校人员—Diana Clarke、Ian Cordasco、Mark McClain、Paul McLanahan和Ryan Petrello—花了大量时间查找示例代码和相关解释中存在的问题。感谢他们的辛勤工作,终的作品远比靠一人之力得到的结果好得多。Jim Baker描述readline模块时提供了很有帮助的观点,特别是为那些GNU库很老或者默认未安装GNU库的平台提出了gnureadline包。Patr
以下为对购买帮助不大的评价