书籍作者:道格·赫尔曼 | 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