Python标准库(标签版)

所需积分/C币:10 2015-07-09 15:36:59 65.44MB PDF
2
收藏 收藏
举报

这是一本完整的python标准库扫描版,我将其标签化,方便电脑查找。
译者序 Python的设计哲学是“优雅”、“明确”、“简单”。因此, Pytho开发者的哲学是“用一种 方法,最好是只有一种方法来做一件事”。不仅如此, Python设计为一种可扩展的语言,并非 所有的特性和功能都集成到语言核心。随 Python附带安装有 Python标准库,标准库包含大量 极其有用的模块。熟悉 Python标准库十分重要,因为如果熟悉这些库中的模块,那么大多数问 题都可以简单快捷地使用它们来解决 标准库包含数百个模块,为常见任务提供了丰富的工具,可以用来作为应用开发的起点。 也许有人发现一个模块正是他想要的,但是不知道如何来使用;也许有人为他的任务挑选了不 合适的模块,也可能已经厌倦了一切从头开始。大多时候,一个简短的例子要比·份手册文档 更有帮助。这正是本书的出发点。本书会提供一些精选的例子,展示如何使用这些模块中最常 用的一些特性。相信你在使用 Python时遇到的问题都能在本书中得到解答。 本书作者从14版开始就一直在从事 Python编程方面的工作,他正是享有盛誉的博客系列 “ Python Module of the Week”的博主。在这个博客中,他全面研究了标准库的众多模块,利用 实际例子来介绍各个模块如何工作。相信很多人已经从他的博客中受益。为满足人们的迫切需 求,他把这些博客文章进一步整理完善,形成了你手上的这本书。 本书沿袭了博客的叙事风格, Doug Hellmann通过轻松的方式,让你从具体的例子、具体 的实践中了解技术细节,在知道“怎样儆”的同时还能理解“为什么这样做”。相信你已经迫 不及待地想要翻开下页了,那么,进入Doug的 Python世界吧! 本书由刘炽、苏金国、李璜、杨健康等主译,乔会东、仝磊、王少轩、程芳、宋旭民、黄 小钰等分别对全书各章进行审阅,另外姚曜、程龙、吴忠望、张练达、陈峰、江健、姚勇、卢 鋆、张莹參与了全书的修改整理,林琪、刘亮、刘跃邦、高强和王志淋统→了全书术语,并完 善了关键部分的翻译。由于水平有限,译文肯定有不当之处,敬请读者批评指正。 刘炽 序 今天是2010年的感恩节。不论人们是否身在美国,在这个节日里,大家都一边品尝丰盛的 食物,一边欣赏橄榄球比赛,有些人可能会出门逛逛。 对我(以及其他很多人)来说,会借此机会回顾一下过去的岁月,想想那些让我们的生活 充满色彩的人和事,向他们致以感谢。当然,我们每天都该这么做,不过专门有一天来表达谢 意有时会让我们想得更深远一些。 现在我坐在这里为本书写序,非常感谢能有机会做这件事,不过我想到的不只是本书的内 容,也不只是作者本人(一个无比热情的社区成员),我所想的是这个主题本身 Python,具 体来讲,还有它的标准库 当前发布的每版 Python都包含数百个模块,它们是多年来多位开发人员针对多个主题和 多个任务共同完成的。这些模块涵盖一切,从发送和接收Emal,到GUI开发,再到内置的 HTTP服务器都一应俱全。就其本身而言,标准库的开发和维护是一项极共庞大的工作。如果 没有多年来一直维护它的人们,没有数以千计的人提交补丁、文档和提供反馈,它绝不会成为 今天的模样。 这是-个惊人的成就,在 Python日益普及的今天(不论是作为语言还是一种生态系统), 标准库已经成为其中不可或峡的重要组成部分。如果没有标崔库,没有核心团队和其他人员的 “内含动力”( batteries included)口号, Python绝对不可能走这么远,它已经被成千上万的人和 公司下载,并已安装在数百万服务器、台式机和其他设备上。 即使没有标准库, Python仍是一种很不错的语言,在教学、学习和可读性方面有扎实的基 础。基于这些优点,它本身也能发展得足够好。不过标谁库把它从一种有趣的体验变成为一个 强大而有效的工具 每一天,全世界的开发人员都在构建工具和完整的应用,他们所基于的只是核心语言和标 崔库。你不仅要能够明确概念,描述汽车是什么(语言),还要得到够的部件和工具来自行 组装一辆基本的汽车。它可能并不完善,不过可以使你从无到有,这将是一个很好的奖励,会 赋子你巨大的动力。我曾反复对那些骄傲地看着我的人说:“看看我构建的应用,除了 Python 提供的,其他的工具通通都没有用到!” 不过,标准库也不是完美无缺的,它也有自己的缺陷。由于标准库的规模、广度和它的 年龄”,毫无疑问有些模块有不同层次的质量、AP简洁性和覆盖性。有些模块存在“特性蔓 延”的问题,或者无法跟进其覆盖领域中的最新进展。通过众多不计酬劳的志愿者的帮助和辛 勤工作, Python还在继续发展、壮大和改进。 不过,有些人对 Python还有争议,不仅由于它的缺点,而且因为标准库并不一定构 成其模块涵盖领城中“最顶尖的”解决方案(毕竟,“最佳”是一个不断改变和调整的目 标),因而认为应当将它完全舍弃,尽管它还在不断改善。这些人遗漏了一个事实:标准 库不仅是促使 Python不断成功的一个重要组成部分,而且尽管存在瑕疵,它还是一个绝 妙的资源 不过我有意忽略了一个巨大的领城:文档。标崔库的文档很不错,还在继续改进和发屁。 由于标准库的庞大规模和广度,相应的文档规模也很惊人。在数以千计的开发人员和用户的努 力下,我们有成百上千页文档,实在让人佩服。每天都有数万人在使用这些文档创建应用 可能简单到只是一页的脚本,也可能很复杂,比如控制大型机械手的软件。 正是由于文档,我们才会看到本书。所有好的文档和代码都有一个起点一关于目标 “是什么”以及“将是什么”要有一个核心概念。从这个内核出发,才有了角色(API)和故 事情节(模块)。谈到代码,有时代码会从一个简单的想法开始:“我想解析一个宇符串,查 找一个日期。”不过等结束时,你可能已经查看了数百个单元测试、函数以及你编写的其他代 码,你会坐下来,发现自己构建的东西远远超出了原先的设想。文档也是如此,特别是代码 文档。 在我看来,代码文档中最重要的部分就属于这种例子。要写有关一个AP1中某一部分的描 述,你可能会写上几本书,可以用华丽的文字和经过深思熟虑的用例来描述松耦合的接口。不 过,如果第一次查看这个描述的用户无法将这些华丽的文字、仔细考量的用例和API签名结合 在一起,构建出有意义的应用并解决他们的问题,这一切就完全是徒劳。 人们建立重要连接所用的网关也属于这种例子,这些逻辑会从一个抽象概念跳转到具体的 事物。“了解”思想和AP是一回事;知道它如何使用则是另外一回事。如果你不仅想要学到 东西,还希望改善现状,这会很有帮助。 这就把我们重新引回Pyth0n。本书作者 Doug Hellmann在2007年创建了一个名为“ Python Module of the week”的博客。在这个博客中,他仝面研究了标准库的众多模块,采用一种“示 例为先”的方式介绍各个模块如何工作以及为什么。从读到它的第一天起,它就成为我除了核 心 Python文档之外的又一个必访之地。他的作品已经成为我以及 Python社区其他人不可缺少 的必备资源。 Doug的文章填补丁当前我所看到的 Python文档的一个重大空白:对例f的迫切需求。用 种有效而简单的方式展示如何做以及为什么这么做,这绝非易事。我们已经看到,这也是 项很重要、很有价值的工作,对人们每一天的工作都有帮助。人们频繁地给我发邮件,告诉 我:“你看过Doug的这个帖子吗?实在太棒了!”或者“为什么这个不能放在核心文档里呢? 它能帮助我了解到底是怎么做的!” 当我听说Doug准备花些时间进一步完善他现有的工作,把它变成一本书,让我能把它放 在桌子上反复翻阅,以备急用,我真是太兴奋了。Doug是一位非凡的技术作者,而且能敏锐地 捕捉到细节。有一整本书专门讲解实际例子,介绍标准库中一百多个模块是如何工作的,而且 是他来写这本书,实在让我欣喜若狂 所以,我要感谢 Python,感谢标准库(包括它的瑕疵),感谢我拥有的这个活力充沛有时 也存在问题的庞大 Pytho社区。我要感谢核心开发小组的辛勤工作,包括过去、现在,还有将 来。我还要感谢这么多社区成员提供的资源、投入的时间和做出的努力,其中 Doug hellmann 更是卓越的代表,正是这些让这个社区和生态系统如此生机勃勃 最后,我要感谢本书。继续向它的作者表示敬意,这本书会在未来几年得到充分利用 Jesse noll Python核心开发人员 PSF Board成员 auni公司首席工程师 前言 随每个 Python版本的发布会同时发布标准库,标准库包含数百个模块,为操作系统、解释 器和互联网之间的交互提供了丰富的工具。所有这些模块都得到充分测试,可以用来作为应用 开发的起点。本书会提供一些精选的例子,展示如何使用这些模块中最常用的一些特性,正是 这些特性使 Python有了“内含动力”的口号。这些例子均取自流行的“ Python Module of the Week( YMOTW)”博客系列。 本书读者对象 本书的读者应该是中等水平的 Python程序员,所以尽管书中对所有源代码都做了讨论,但 只有一部分会还行给出解释。每节会通过源代码和完全独立的示例程序的输出来重点介绍一个 模块的特性。我会尽可能简洁地介绍各个特性,使读者能够把重点放在所展示的模块或函数 上,而不会因支持代码而分心 熟悉其他语言的有经验的程序员可以从本书了解 Python,不过本书并不是这种语言的入门 读物。研究这些例子时,如果之前对编写 Python程序有些经验会很有帮助。 有些章节(比如679节和92节)还需要一些领域特定的知识。这里会提供解释这些例子 所需的基本信息,不过由于标准库中模块涵盖的主题如此宽泛,因此不可能在一本书中全面地 介绍每一个主题。在每个模块的讨论之后,还提供一个推荐资源列表,可以进一步阅读这些资 源,从中了解更多信息。其中包括在线资源、RFC标准文档以及相关图书。 尽管目前向 Python3的过渡正在进行当中, Python2仍可能是这几年生产环境中使用的主 要 Python版本,这是因为存在大量遗留 Python2源代码,另外向 Python3过渡的速度相当迟 缓。本书中所有例子的源代码都由原来的在线版本做了更新,并用 Python27(这是 Python2x 系列的最后一个版本)进行了测试。很多示例程序完全可以在 Python3下工作,不过有些例子 涉及的模块已经改名或者已经废弃 本书组织结构 模块均分组在不同章中介绍,以便查找单个模块来加以引用,并且可以按主题浏览做更深 层次的探讨。相对于htp:/docs. python. org上全面的参考指南,本书可以作为补充,提供完全 可用的示例程序来展示参考指南中介绍的特性 VIIL 下载示例代码 原来的博客文章、本书勘误以及示例代码都可以从作者的网站(htp:www.doughellmann com/ books/byexample)下载 致谢 如果没有大家的贡献和支持,本书绝无可能出现。 1997年 Dick wall让我第一次接触到 Python,那时我们正在 ERDAS一起合作开发G软 件。我记得,当我发现这样一门如此简便易用的新工具语言时,立刻就喜欢上了它,还对公司 不让我们用它来完成“实际工作”颇有不满。在接下来的所有工作中我都大量使用了 Python 我要感谢Dick,正是因为他,给我以后的软件开发带来许多快乐时光。 Python核心开发小组创建了一个由语言、工具和库共同构建的健壮的生态系统,这些库在 日益普及,还在不断发现新的应用领城。如果没有他们付出的宝贵时间,没有他们提供的卡富 资源,我们都还得花时间一次又一次地一切从头开始。 正如前言中所说的,本书中的材料最初是一系列博客文章。每篇文章都得到了 Python社区 成员的审阅和评论,有纠正,有建议,也有问题,这些评论促使我做田修改,这才有了读者手 上这本书。感谢大家每周都花时间来阅读我的博客,谢谢大家的关注。 本书的技术审校人员—— Matt Culbreth、 Katie Cunningham、 Jeff mcneil和 Keyton Weissinger 花了大量时间查找示例代码和相关解释中存在的问题。最终的作品远比我靠一人之力得到的结 果强得多。我还得到了 Jesse noller对于 multiprocessing模块以及 Brett Cannon关于创建定制 导入工具提出的很多建议 还要特别感谢 Pearson的编辑和制作人员,感谢大家辛苦的工作和一贯的支持,帮助我明 确本书的目标 最后,我要感谢我的妻子 Theresa Flynn,她总是能提出最棒的写作建议,在完成本书的整 个过程中,她都一如既往地鼓励我、支持我。当她告诉我,“要知道,某些情况下你要坐下来 把它写出来”,我真的很佩服她能如此洞察一切。下面轮到你了。 目录 译者序 4.1比较文本体 49 序 142无用数据… 前言 14.3比较任意类型…………53 第1章文本 …第2章数据结构………… 55 1.1 string文本常量和模板……1 2.1 collections-容器数据类型… 56 1.1.1函数…………… 2.1.1 Counter…………………………56 1.1.2模板…………………2 2.12 defaultdict…59 1.13高缴模板……… 4 21.3 deque………………59 1.2 textwrap-—格式化文本段落 6 2.1,4 namedtuple………… 63 121示例数据 2.1.5 OrderedDict…… 65 1.2.2填充段落………… 22aray固定类型数据序列………66 221初始化… ·借想里世世世世 .h7 1.2.3去除现有缩进………………7 124结合 dedent和fll 222处理数组 …67 1.2.5悬挂缩进 8 223数组与文件………… 68 1.3re—正则表达式……… 224候选字节顺序………………68 1.3.1查找文本中的模式… 23 heapq堆排序算法………………69 1.3.2编译表达式… ………………10 231示例数据… ……170 1.3.3多重匹配…… 232创建堆… …70 1.3.4模式语法 12 233访问堆的内容…………………………72 13.5限制搜索…2 234堆的数据极值…………73 1.3.6用组解析匹配……… 23 24 bisect-维护有序列表… ………74 1.3.7搜索选项 28 2.4.1有序插人… ……………74 1.3.8前向或后向………………………36 242处理重复…… ………75 13.9自引用表达式………………………40 25 Queue——线程安全的FFO实现……76 1.3.10用模式修改字符串……14 25.1基本FIFO趴列………………………77 1.3.11利用模式拆分……………………46 252LIFQ队列…… ……77 14 diffie比较序列… 49 253优先队列……… ……78 X 254构建一个多线程播客客户程序……793.24过滤…… 2.6 struct——二进制数据结构…………81 325数据分组……………………121 26,1函数与Sue类…………………8133 operator-—内置操作符的函数 2.62打包和解包……………………81 接口…………123 263字节序……………………………82 331逻辑操作………………123 264缓冲区 …84 332比较操作符…… 124 2.7 weakref-对象的非永久引用 85 333算术操作符……………124 271引用… 85 334序列操作符………… ……126 272引用回调…………86 335原地操作符………………………127 273代理…………………………………87 336属性和元素“获取方法”…………128 274循环引用… 87 337结合操作符和定制类……………129 2.7.5缓存刈象……………………………92 33.8类型检查……130 28c。py—复制对象… …943,4 contextlib-上下文管理器工具…131 281浅副本…………………… 94 341上下文管理器API……………131 28.2深副本………………… …95 34.2从生成器到上下文管理器………134 283定制复制行为………………9634.3嵌套上下文………………135 284深副本中的递归…… 96344关闭打开的句柄……………136 29 print-美观打印数据结构…………98 第4章日期和时间 ……138 2.9.1打印…… 暑吾,i;面音面 99 2.9.2格式化………………………………99 4.1time—时钟时间…………………138 293任意类………………………-100 4.L.1壁挂钟时间 …138 2.94递归………101 4.L.2处理器时钟时间……………139 2,9.5限制嵌套输出……… 413时间组成…… ……140 29.6控制输出宽度……101 4.1.4处理时区……………… 141 4.1.5解析和格式化时间……………143 笫3章算法………………………103 42 datetime日期和时阃值管理…144 31 functors—管理函数的工具………l03 4.2.1时间…… 144 311修饰符…0034.22日期………………145 31.2比较 ……111 4.2.3 timedelta………………………147 32 itertools选代器函数…………114424日期算术运算…148 321合并和分解迭代器……………114 425比较值……… 149 322转换输入……… ……116 4.26结合日期和时间 323生成新值………………117427格式化和解析………151

...展开详情
试读 127P Python标准库(标签版)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 签到新秀

关注 私信
上传资源赚钱or赚积分
最新推荐
Python标准库(标签版) 10积分/C币 立即下载
1/127
Python标准库(标签版)第1页
Python标准库(标签版)第2页
Python标准库(标签版)第3页
Python标准库(标签版)第4页
Python标准库(标签版)第5页
Python标准库(标签版)第6页
Python标准库(标签版)第7页
Python标准库(标签版)第8页
Python标准库(标签版)第9页
Python标准库(标签版)第10页
Python标准库(标签版)第11页
Python标准库(标签版)第12页
Python标准库(标签版)第13页
Python标准库(标签版)第14页
Python标准库(标签版)第15页
Python标准库(标签版)第16页
Python标准库(标签版)第17页
Python标准库(标签版)第18页
Python标准库(标签版)第19页
Python标准库(标签版)第20页

试读结束, 可继续阅读

10积分/C币 立即下载 >