猜你喜欢
Python 3标准库

Python 3标准库

书籍作者:道格·赫尔曼 ISBN:9787111608950
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7134
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书共19章,系统而全面地对Python3标准库中的数百个模块进行了生动的讲解。这些模块主要包括:文本处理工具模块,与数据结构和算法相关的模块,管理日期和时间值的模块,用于数学计算的模块,管理文件系统的模块,用于数据存储与交换的模块,用于数据压缩与归档的模块,用于加密的模块,与进程和线程相关的模块,与网络通信、Internet和Email相关的模块,应用构建模块,支持处理多种自然语言和文化设置的模块,开发工具模块,与运行时特性相关的模块等。书中提供了大量示例来充分展示每一个特性,这些示例经过精心设计,以便于学习和重用。

本书适合作为Python程序员的必备参考书。


作者简介

道格·赫尔曼(DougHellmann)目前任职于RedHat,主要负责开发OpenStack项目。他是OpenStack技术委员会的委员,对这个项目的很多方面做出了突出贡献。他从Python1.4版本就开始投入Python编程,曾在多种UNIX和非UNIX平台上参与项目开发,涉及领域包括地图、医疗新闻播报、金融和数据中心自动化。Doug也是PythonSoftwareFoundation的成员,并于2010~2012年担任其信息交流主管。在为《PythonMagazine》做了一年普通专栏作家后,他于2008~2009年担任该杂志的主编。2007~2011年间,Doug在他的博客上发表了颇受关注的“PythonModuleoftheWeek”系列,以及本书的上一个版本(面向Python2),即《Python标准库》(Addison-Wesley,2011)。

编辑推荐

(1)本书由资深Python专家亲自执笔,Python语言的核心开发人员鼎力推荐。

(2)对程序员而言,标准库与语言本身同样重要,它好比一个百宝箱,能为各种常见的任务提供完美的解决方案,所以本书是所有Python程序员都必备的工具书!全书以案例驱动的方式讲解了标准库中数百个模块的使用方法(如何工作)和工作原理(为什么要这样工作),比标准库的官方文档更容易理解(一个简单的示例比一份手册文档更有帮助),为Python程序员熟练掌握和使用这些模块提供了绝 *指导。

(3)本书针对Python3,介绍了Python3.x中新增的库、重大的功能变化,以及新的布局和命名约定。此外,书中还提供了专家级移植指导,可帮助你将代码从Python2.x标准库模块移植到相应的Python3.x标准库模块。


前言

标准库会随每一版Python的发布而发布,其中包含数百个模块,为操作系统、解释器和互联网之间的交互提供了丰富的工具—所有这些模块都得到充分测试,可以用来作为应用开发的起点。本书会提供一些精选的例子,向你展示如何使用这些模块中最常用的一些特性,正是这些特性使Python有了“内含动力”(batteries included)的座右铭。这些例子均取自颇受关注的“Python Module of the Week(PyMOTW)”博客系列。
本书读者对象
本书的读者应该是中等程度的Python程序员,所以尽管书中对所有源代码都做了讨论,却也只有少数情况会逐行给出解释。每一节都强调了模块的特性,并通过源代码以及完全独立的示例程序的输出来具体说明。本书还尽可能简洁地介绍了各个特性,使读者能够把重点放在所展示的模块或函数上,而不会因支持代码而分心。
熟悉其他语言的有经验的程序员可以利用本书来了解Python,但本书并不是关于Python语言的入门读物。研究这些例子时,如果之前有编写Python程序的经验,那么一定会很有帮助。
很多章节(比如介绍套接字网络编程或hmac加密的章节)还需要一些领域特定的知识。书中会提供解释这些例子所需的基本信息,不过由于标准库中模块涵盖的主题如此宽泛,所以不可能在一本书中全面地介绍每一个主题。在每个模块的讨论之后,还提供了一个推荐资源列表,大家可以进一步阅读这些资源,从中了解更多信息。推荐资源包括在线资源、RFC标准文档以及相关图书。
Python 3与Python 2
Python社区目前正在从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

目录

译者序

前言

第1章 文本1

1.1string:文本常量和模板1

1.1.1函数1

1.1.2模板2

1.1.3高级模板3

1.1.4 Formatter5

1.1.5 常量5

1.2 textwrap:格式化文本段落6

1.2.1 示例数据6

1.2.2 填充段落7

1.2.3 去除现有的缩进7

1.2.4 结合dedent和f?ill8

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 diff?lib:比较序列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 比较Enum54

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 上下文管理器API151

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 timedelta177

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 Decimal188

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 SystemRandom206

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 tempf?ile:临时文件系统对象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 f?ilecmp:比较文件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


短评

此用户未填写评价内容

2018-10-18 16:32:29