这本书不是一本典型的O’Reilly风格的书,而是一本集合了多个作者的手稿的作品。实际上,这也是一种将开源开发的方式应用到书籍出版业的尝试。Python社区有超过300个成员在本书中贡献了他们的心得和资料。在这里,我们作为编辑,想给你——本书的读者,介绍一些重要的背景资料,这些背景资料是关于此书是如何编著出来,以及这个过程和涉及的人,并提出一些关于这种崭新的风格的思考。
本书的构思
在2000年初,O’Reilly的主编Frank Willison联系到我(David Ascher),问我是否想写一本书。Frank曾是Learning Python一书的编辑,那本书是由我和Mark Lutz合著而成。由于当时我正在致力于Perl shop(ActiveState)一书的编写,实在没有精力再同时开始另一本书的工作。但我和Frank总是定期地通过E-mail或者聊天工具对该书的一些主题进行探讨。Frank有个主意,他受到Tom Chriistiansen和Nathan Torkington编写的Perl Cookbook一书的启发,认为出一本类似的Python Cookbook将会很有趣。Frank想重复Perl Cookbook一书的成功,但他也认为应该让更多的人参与到此书的编写中。他的想法是,作为一本真正的cookbook,更多人的参与将会提供更多的思路、角度和品味。至于书籍的质量,他认为可以通过技术编辑的把关和O’Reilly严格的编辑流程来保障。
Frank和ActiveState的CEO Dick Hardt意识到Frank的目标和ActiveState的目标其实是殊途同归的。ActiveState的想法是为开源程序员创造一个网络社区,叫做ActiveState Programmer’s Network(ASPN)。ActiveState有一个人气很高的网站,提供了很丰富和多样化的内容。ActiveState充分认识到开源社区具有很强大的力量,它能够提供最新和最准确的内容,无论多么生僻的方面均有涉及。
O’Reilly和ActiveState很快认识到他们的目标上的相似性,并且意识到双方合作是最好的达成目标的方式。他们想要实现的包括:
·创建一个由Python程序员提供素材的在线Python Cookbook,为Python程序员服务;
·出版一本包括了最好素材的书,该书由Python社区中的一些关键人物提供的材料和想法综合而成;
·双方通过完成这本书亦可学习到一种不同的著书模式。
与此同时,有两件事情也需提及。首先,ActiveState的一些人,包括Paul Prescod,开始积极地寻找一些星级人物来加入ActiveState的开发小组中。其中一位候选者是著名的Alex Martelli(但那时我们还没听说过他)。Alex出名的原因是他在Python邮件列表中发表过大量透彻全面的文章,同时他也具有极好的耐心来解释Python的各种细微精巧之处,而且他非常高兴通过他自身的努力为Python带来了更多的新用户。我们不知道他的原因是,他住在意大利,而且对于Python社区来说他还算是一个新用户,Python老手们也从来没见过他。但其实在20世纪80年代的时候,Alex居住在美国,为IBM研发中心工作,并且很狂热地使用和推介其他的一些高阶语言(那时,大多是IBM的Rexx)。
ActiveState热切地期望Alex的到来,并试图劝说他搬到温哥华。我们已经是如此接近成功,可惜他的雇主给他带上了个金手铐,而且温哥华的天气明显无法与意大利的宜人气候竞争。所以,最后Alex仍然留在意大利,这让我很失望。即便如此,Alex当时仍然在与O’Reilly接洽和商议写一本书。Alex想写一本cookbook类型的书,但Python Cookbook当时已经签约。所以后来Alex和O’Reilly签了另外一本书Python in Nutshell的合同。
第二件同时进行的事就是创建Python软件基金会。由于各种各样的原因,这件事被当做最好的部分,在某个会议的结束酒会上被提出来,Python社区的成员想要创立一个非盈利性的组织,作为各种各样Python作品的知识产权的拥有者,这样可以确保Python及其衍生的作品有更加坚实的法律支撑。当然,这样的一个组织需要经济上的支持和Python社区的支持才能成功。
在综合考虑当时的各种情况之后,各方达成了以下协议:
·ActiveState将会创建一个在线cookbook,提供一种机制让任何人可以提交技巧(比如,针对某个特定问题的一段Python代码,以及相关的一些探讨,用以阐明为何以及在什么条件下使用这个窍门)。为了激发作者的积极性和读者的互动性,这个网站还允许读者提出修改建议和问题。
·作为我的ActiveState工作的一部分,我将编辑和确保这些材料的质量。Alex Martelli也加入了这个项目,作为合作编辑,为那些将要出版的材料把关,另外还有Anna Martelli Ravenscroft,我们一起作为此书第2版的主要编辑。
·O’Reilly将那些最好的技巧和心得集中起来出版,形成本书。
·作为本书作者版税,此书售卖的部分收入将捐赠给Python软件基金会。
本书的实现
在线cookbook(在http://aspn.activestate.com/ASPN/Cookbook/Python/)是所有的技巧和心得材料的一个入口。读者可以通过填写表格和一些相关信息来注册免费的账户。那些材料现在已经变成了本书的一部分。成千上万的用户阅读过那些材料,并且给出了相应的评论,因此,在本书的出版发行过程中,相关的材料已经变得越来越成熟和丰富。同时,作者的名字被印在书中也会吸引更多的人去访问在线cookbook。随着每月新的技巧和心得的持续增加,以及邮件列表中越来越多的人频繁地引用在线cookbook,可以期望这个在线cookbook也会取得极大的成功,这将再次证明作者的工作带给读者的巨大价值。
既然已经拥有了网站中的大量素材,那么实现这本书的工作就变成了挑选、合并、排序以及一些编辑工作了。这部分工作的一些细节将会在前言的“组织方式”部分介绍。
使用本书中的代码
. 本书的目的是为了帮助你更好地完成工作。一般而言,可以随意在自己的程序或者文档中使用书中代码。不需要联系我们来获得许可,除非使用了相当大一部分代码作为产品的一部分。比如,使用书中的代码写几个程序,无须获得许可。但是贩卖含有本书的代码的光盘则需要获得许可。回答问题时引用本书中的代码和文字不需要获得许可。而从本书中择取一定数量的代码用于你自己产品的文档则需要获得许可。我们感激但不强求使用者给出出处。一个完整的出处通常包括了标题、作者、出版商以及ISBN。举个例子:“Python Cookbook, 2nd ed., by Alex Martelli, Anna Martelli Ravenscroft, and David Ascher (O’Reilly Media, 2005) 0-596-00797-3”。如果你觉得使用代码的情况可能符合需要获取许可的条件,请通过permissions@oreilly.com与我们联系。
本书的读者
我们希望你至少能够懂一点Python。本书并不是一本循序渐进教授Python语言的书。实际上,它针对某些特定的任务和问题,提出一些特别的技术和概念(有时是花招)来应对。如果想找一本完整的介绍Python语言的书,可以考虑前言中“参考资料”部分里面提到的书。不过也不需要完全了解Python就能从本书获益。一些章节展示了完成一些基本和通用任务的最佳技术,而另一些章节则展示了更加复杂和特殊的技术。我们在书中加了很多边栏来提示一些书中提到的概念,以便将它们和你听到的一些概念区分开来,但你也许仍会感到混淆。所以,这绝对不是一本给初学者看的书。本书针对的最大的读者群应该是Python社区的人,他们中有很多很棒的程序员,他们既不是刚上手的新人,也不是Python用得出神入化的高手。如果你已经对Python有了很多了解,本书仍可能给你一个惊喜,因为我们也把一些最新的和不为人所知的领域的高级技巧收进了本书。你会学到一些新的东西,就像我们一样。无论你在Python技术方面处于哪个级别,我们都相信你能从本书获得一些有价值的东西。
如果你已经有了本书的第1版,可能会问,我还需要购买第2版吗?我们认为,答案是“是的”。第1版有245节;我们只保留了其中的146个(而且绝大多数都重新编辑过),并增加了192个新的,这样第2版中总共有338节。所以,本书中有超过半数内容是全新的,而且所有的例子都被更新和修改过,以便适用于Python 2.3和2.4。这也是本书比第1版多了约100节却仍能够保持页数大致相同的主要原因。第1版覆盖的Python版本包括了1.5.2(相当的老的版本)到2.2;本书则集中于2.3和2.4。这应当归功于如今Python的强大表现力,而且我们也避免和删除了一些为了兼容5年甚至更久之前的Python的“历史包袱”般的内容,因此我们能够用大致相同的篇幅,提供更多有价值和更实用的内容。
组织方式
本书有20章。每章都集中提供某一特定类型的技巧和方法,比如有关算法的、文本处理的以及数据库操作的等。第1版有17章。不过Python也在不断进步,无论是语言本身还是相关的库都在不断变化,另外Python社区发表在cookbook在线的文章也在不停地更新和增加,所以我们加入了全新的3个章节:在Python 2.3中引入的迭代器(iterator)和生成器(generator);关于Python对时间和财务的操作,新旧并呈;Python 2.2中导入了新的工具和类型(自定义描述符(custom descriptor),装饰器(decorator),元类(metaclass))。每章包括一个总体介绍,由这方面的一个专家执笔,然后是从在线cookbook中撷取的技巧和方法(其中有大约5%的内容是专为本书撰写的),并被编辑和修改,以符合全书的整体格式与风格。Alex(在Anna的帮助下)主要负责对第1版的内容进行筛选,确定哪些需要保留,哪些需要更新,并从网站的近1000个材料中挑选新的内容,再进行合并或修改(所以,如果你发现在线cookbook提交的内容和印刷出来的版本不一样,找Alex去吧,一定是这家伙干的)。他也需要确定涵盖哪些主题,但有时他可能难以找到符合主题的好材料,所以某些内容并没有被选入,或者最后选用了一些不是从在线cookbook中找来的材料,这也不完全是他的错。
当材料的选择工作完成之后,就进入了编辑及合并的工作,有时还需要把在线cookbook上的一些重要的相关评论融合到内容中。这的确是个挑战,就像此书的第1版一样,甚至更具挑战性。那些技巧和方法涵盖范围极广,复杂度、完整度和组织方式也相应变化。此书涉及了超过了300名作者,他们每个人的声音和风格都包含在书中。我们必须设法让本书能够容纳多种风格,以反映出本书最本质的特点——由整个Python社区集体完成。当然,我们也必须小心翼翼地进行编辑工作,以确保内容尽可能地易于使用和查阅,同时还要维持着全书统一的结构和呈现方式。绝大多数材料,包括本书第1版和在线cookbook中的材料,都必须先根据当前情况更新,有的甚至还要重写。不过,通过借助新工具和更好的方法,这个工作完成得很顺利。然后,我们要仔细考虑各章节的排列顺序、每个章节中的布局以及相关技巧和方法的排列顺序。我们做这种排序的工作主要是为了让本书更加易于使用,无论是对刚上手的新人还是Python老手都是如此,同时,对于各种不同的阅读习惯,无论是按照逐字逐页的顺序阅读本书,还是为了重点加强某个领域的知识而跳跃性地阅读,甚至是漫无目的地随机阅读,我们都希望我们的排序和组织方式能够对读者有所帮助。
虽然本书很适于“跳跃性”阅读,我们仍然相信,花一些时间循序渐进地一览全书,会为你节约更多的时间。在这次初览中,可以跳过那些你觉得难的,或者不感兴趣的章节。虽然你跳过了一些内容,但是仍可以粗粗地领略到本书的构建方式以及各个主题是如何覆盖和解释的,这将为你以后更深层次的精读打好基础,如果愿意,随机的跳跃性的阅读当然也没问题。为了帮助你更好地了解本书的内容,我们给出了各个章节的主要内容介绍,以及为各个章节写下引言的Python专家的介绍。
第1章,引言由Fred L. Drake, Jr撰写。
本章包含了操纵文本的一系列方法和窍门,包括了合并、过滤、格式化字符串以及在整个文本中对部分字符串的替换,还有Unicode的处理。
Fred Drake是PythonLabs group的成员,一直致力于Python的开发。他是3个孩子的父亲,Fred在Python社区很有名气,因为他一人独立完成了整个官方文档的维护。Fred还是Python & XML一书的合著者。
第2章,引言由Mark Lutz撰写。
本章呈现了操作文件中的数据以及操纵文件系统下的文件和目录的一些技术,还包括了处理特定的文件格式以及存档格式的内容,比如tar和zip格式。
Mark Lutz以著作多而闻名,他的书包括了Programming Python、Python Pocket Reference以及Learning Python(都由O’Reilly出版),最后一本由他和David Ascher合作完成。Mark同时还是一流的Python培训教师,为Python在全世界的传播和流行尽心尽力。
第3章,引言由Gustavo Niemeyer和Facundo Batista撰写。
本章(第2版中的新章节)介绍了处理日期、时间、十进制数以及一些和财务相关的问题的工具和技术。
Gustavo Niemeyer是第三方模块dateutil的作者,他参与了很多Python的扩展和项目的开发。Gustavo住在巴西。Facundo Batista是Decimal PEP 327的作者,同时也是标准库模块decimal的作者,由于这个模块,Python 2.4才支持浮点十进制计算。他住在阿根廷。作为本书的编辑,我们非常高兴能够请到他们俩为本章撰写引言。
第4章,引言由David Ascher撰写。
本章包括了一些很通用的,可以应用到各处的技术,这些内容难于归结到某个类别。
David Ascher是本书的编辑之一。David的背景颇为斑驳,他做过物理研究、视觉研究、科学可视化、计算机图形学,还摆弄过一堆编程语言,他还是Learning Python一书的合著者,也做过Python的教学工作,最近,他又接手了一些非技术性的任务,比如管理ActiveState的团队。David还定期地组织Python会议。
第5章,引言由Tim Peters撰写。
本章覆盖了Python中的搜索和排序技术。很多例子展示了将稳定快速的list.sort和decorate-sort-undecorate(DSU)(在Python 2.4中新导入的能力)结合在一起的创造性的应用,其余例子还展示了heapq、bisect的威力,并介绍了Python中其他的搜索和排序工具。
Tim Peters以tim-bot的诨号为人所知,他是Python界中的一个传奇性的人物。他犹如一个导师或先知,在Guido van Rossum抽不开身的时候,他能够化身为另一个Guido van Rossum来指引方向;当有人略微提及有关IEEE标准的问题时,他又能够化身为IEEE-754浮点标准委员会,引经据典,滔滔不绝;当有人试图鼓吹对Python进行某些激进的改革时,他还能够适时地表现出中流砥柱的一面,稳健而坚定。Tim也是PythonLabs团队中的一员。
第6章,引言由Alex Martelli撰写。
本章的内容展示了在Python中应用面向对象编程模式的威力,包括了一些很重要的技术,比如通过一些特殊方法来托管和控制属性,用一些中级的技术来实现不同的设计模式,还有一些对于高级概念的简单应用,比如自定义元类,关于元类的有关内容在第20章会有更深入的探讨。
Alex Martelli,外号martelli-bot,是本书的编辑之一。他在IBM研发中心工作过约十年,然后又在think3, inc.工作了更久的时间。Alex现在是自由职业的顾问,最近在为AB Strakt工作,那是个以Python为业务中心的瑞典公司。他有时也编辑Python文章或者著书,比如Python in a Nutshell,偶尔,他还会研究一下合约桥牌。
第7章,引言由Aaron Watters撰写。
本章着重介绍了Python的持久化技术,包括序列化的方法以及和不同的数据库交互的方式。
Aaron Watters是最早的Python倡导者之一,也是数据库专家。他作为第一本Python书(Internet Programming with Python, M&T Books,现在已经绝版)的主要作者而闻名遐迩,他也是很多广为流传的Python扩展的作者,比如kjBuckets和kwParsing。Aaron目前也是自由职业的顾问。
第8章,引言由Mark Hammond撰写。
本章介绍了一系列有关调试和测试的方法和窍门,包括了可定制错误日志和回溯信息,以及使用可定制模块(unittest和doctest)进行单元测试。
为了使Windows平台支持Python,Mark Hammond做了很多工作并因此而出名。他和Greg Stein创建了一个包含很多模块的强大的库,这个库将Python完全地映射到了Windows的一系列API、库甚至组件模型,如COM。他是个专家级的设计者,还是很多开发工具的作者,其中最为人所知的工具就是Pythonwin和Komodo。最后,Mark还是调试高手,在Komodo开发中,常常面对各种棘手的状况,他有时也被邀请去调试涉及三种语言(Python、C++和Javascript)的、多线程、多进程的系统。Mark和Andy Robinson合著了Python Programming on Win32一书。
第9章,引言由Greg Wilson撰写。
本章涵盖了一系列同步编程技术,包括了线程、队列以及多进程。
Greg Wilson写过儿童书籍,也写过并行编程和数据处理的书。当他不写书的时候,他是Doctor Dobb’s Journal的得力编辑,多伦多大学计算科学系的助理教授,同时还是个自由职业的软件开发者。Greg是Software Carpentry项目的最初发起者和推动者,最近他又得到Python软件基金会的认可,为需要进行科学计算的科学家和工程师开发一系列具有Python特色的课程材料。
第10章,引言由Donn Cave撰写。
本章介绍了利用Python进行一些通用的系统管理任务的内容,包括生成密码和操作Windows的注册表,以及处理信箱和Web服务器的问题。
Donn Cave是华盛顿大学计算中心的软件工程师。多年以来,Donn已经在comp.lang.python充分证明了他在有关系统调用、UNIX、系统管理、文件、信号等方面丰富的知识和技能。
第11章,引言由Fredrik Lundh撰写。
本章包括了一些通用的界面任务,主要使用Tkinter,但也涉及了一些wxPython、Qt、图像处理,以及和Jython(用于JVMJava虚拟机)相关的一些特定的界面处理,还有Mac OS X和IronPython(用于dotNet)。
Fredrik Lundh也以eff-bot之名著称,他是Secret Labs AB的CTO,该公司主要提供一些基于Python的产品和技术。Fredrik是Tkinter(Python最流行的界面工具包)领域的一流专家,也是Python图形库(Python Image Library,PIL)的主要作者。他还是Python Standard Library一书的作者,该书对Python的标准库进行了全面的介绍,可以说是本书非常有益的补充。他在comp.lang.python发文极多,极大地帮助了广大的Python新手,甚至很多老手和专家也从他的文章中获益良多。
第12章,引言由Paul Prescod撰写。
本章介绍了如何使用一系列Python工具来分析、处理以及生成XML。
Paul Rescod在三种技术方面完全可以称得上是专家:Python,在这个方面他已经无须向世人来证明什么了;XML,他在XML的应用上的功力也毋庸置疑(Paul和Charles Goldfarb合作,完成了XML handbook一书);Unicode,不像前面两种技术,Unicode总是让广大程序员痛苦而迷惘。Paul目前是Blast Radius的产品经理。
第13章,引言由Guido van Rossum撰写。
本章包括了各种网络编程技术,从基本的TCP客户端和服务器,一直到操纵MIME消息的技术。
Guido创造了Python,并在Python的整个幼儿期精心照顾它,现在Python的发展方向还完全由他控制着。对于这位Python之父,我们实在没有什么可说的了。
第14章,引言由Andy McKay撰写。
本章主要介绍了Web相关的技术,包括CGI脚本、在Jython中运行Java servlet以及访问web页面的内容。
Andy McKay是Enfold Systems的副总裁和创始人之一。过去几年来,Andy从快乐的Perl用户转变成了狂热的Python、Zope以及Plone专家。他写了Definitive Guide to Plone一书,并且还运营着一个热门的Zope讨论网站,http://www.zopezen.org。
第15章,引言由Jeremy Hylton撰写。
本章介绍了将Python用于简单的分布式系统的一些技术,包括了XML-RPC、CORBA以及Twisted的Perspective Broker。
Jeremy Hylton在Google工作。除了他年幼的双胞胎孩子,他还喜欢计算机编程理论、解析器等。作为他为CNRI工作的一部分,Jeremy在许多分布式系统上做过工作。
第16章,引言由Paul F. Dubois撰写。
本章涉及了程序内省、currying机制、动态导入以及程序发布、词法分析和解析。
Paul Dubois在Lawrence Livermore国家实验室工作过多年,从天气模型到原子模拟器,他为那里的科学家开发过各种各样的软件系统。他在有关科学计算方面有着无与伦比的经验,同时还精于程序设计和高级的面向对象编程技术。
第17章,引言由David Beazley撰写。
本章提供了一些技巧和方法,可以帮助读者在Python扩展的开发中事半功倍。
David Beazley最主要的名声来自于SWIG,这是一个精巧强大的工具,可以快速地将C程序和相关的库打包,再由Python、Tcl、Perl等其他语言来调用。这个看似语言无关的中立的工具实际上是以支持Python为第一要务的,关于此点,在他的著作Python Essential Reference中可见端倪。David Beazley是相当变态(这里没有贬义)的家伙,他总是能让我们相信他的脑子里随时会产生出更多惊人而强大的工具。他现在正在芝加哥大学向计算机科学系的学生灌输他的幽默感。
第18章,引言由Tim Peters撰写。
本章提供了一些用Python实现的、优美而实用的算法和数据结构。
Tim Peters的相关信息见前面第5章内容介绍部分。
第19章,引言由Raymond Hettinger撰写。
本章(第2版中新加入的章节)介绍和展示了迭代器和生成器的强大威力,它们让你的循环结构变得更简单、更快速,同时也更具有复用性。
Raymond Hettinger是itertools包的开发者,也是生成器表达式方案的提出者。他已经成为了Python发展中重要的贡献者。如果你不知道是谁构思和实现了Python 2.3和2.4中的一些新颖而重要的优化,我们建议你打赌Raymond就是那个家伙。
第20章,引言由Raymond Hettinger撰写。
本章(第2版中新加入的章节)从深层次审视了Python语言的一些基础构架和元素,正是这些部分使得Python的面向对象编程技术更加强大而平滑。无论是为了找乐子还是应用于实际,你都可以自行发掘和定制这些元素。从创建属性的惯用法到重命名和缓存属性,到装饰器(decorator),再到一个自定义元类工厂(a factory of custom metaclasses),这些方法允许你操纵字节码从而优化程序功能,还允许你避免元类型冲突。本章表明,即使这些部分看起来很复杂、很吓人,只要你静下心来认真研究,你的Python应用能力会获得极大的提高。
Raymond Hettinger的信息见前面第19章内容介绍部分。
参考资料
从一般的介绍性文章到非常正式的语言描述文档,有很多文本内容可以帮助你学习Python或者帮助你加深对某些技术的理解。
对于一般学习而言,我们推荐下列书目(所有的这些书都至少涵盖了Python 2.2,除非特别注明):
·Python Programming for the Absolute Beginner,Michael Dawson著(Thomson Course Technology),对于从未编写过程序的人而言,这是一本非常实用的、简洁易读的Python介绍性读物。
·Learning Python,Mark Lutz,David Ascher著(O’Reilly),这是一本非常全面的关于Python基础知识的介绍性读物。
·Practical Python,Magnus Lie Hetland著(APress),此书介绍了Python,同时也在书中开发了很多实用而重要的程序,细节描述多,完成度也高。
·Dive into Python,Mark Pilgrim著(APress),这是一本针对有经验的程序员的快速入门读物,也可以免费在线阅读或者下载(http://diveintopython.org)。
·Python Standard Library,Fredrik Lundh著(O’Reilly),此书为Python发行版的庞大的标准库中的每个模块提供了一个有用的实例(目前此书的第1版只支持到Python 2.0)。
·Programming Python,Mark Lutz著(O’Reilly),这是一本有关Python编程技术的全面的纲要性读物(目前此书第2版只支持到Python 2.0)。
·Python Essential Reference,David Beazley著(New Riders),这是一本针对Python语言本身和核心的Python库的快速查阅参考书(目前此书第2版只支持到Python 2.1)。
·Python in a Nutshell,Alex Martelli著(O’Reilly),这是一本广为使用的、可以快速查阅Python语言和一些关键库的参考书。
另外,其他一些具有特殊用途的书也可以帮助你了解Python编程在特定领域的应用。至于是否喜欢那些书,则要看你感兴趣的领域是什么。根据个人经验,编辑推荐下列书目:
·Python and XML,Christopher A. Jones,Fred L. Drake, Jr.著(O’Reilly),介绍了关于Python读取、处理和转换XML的各种技术。
·Jython Essential,Samuele Pedroni,Noel Rappin著(O’Reilly),这是一本关于Jython的权威书籍,也是Python到JVM的一个桥梁。如果读者已经懂一些Java,此书的用处就更大了。
·Game Programming with Python,Sean Riley著(Charles River Media),此书涵盖了用Python进行游戏编程的方方面面,包括从高级图形操作到不错的人工智能。
·Python Web Programming,Steve Holden著(New Riders),涵盖了用Pythin构建网络系统的技术,并介绍了其他一些相关内容(数据库、HTTP、HTML等)。对于在这些领域没有经验或者经验很少的读者来说,这是一本很实用的书。
如果你在阅读本书时遇到问题,除了上面这些书,还有一些重要的资源可以帮助你找到答案。我们将在每个小节的“更多资料”的条目下给出一些信息和指引。通常,我们可以参考和查阅标准的Python文档:最常用的是“Library Reference”,有时查看“Reference Manual”,偶尔也会看看“Tutorial”。这些文档都可以以多种形式免费获得。
·python.org网站(http://www.python.org/doc/),总是提供最新的关于Python的文档。
·pydoc.org网站(http://pydoc.org//),提供标准库中每个模块的文档,这些文档由pydoc这个强大工具自动生成。
·Python本身。最近的Python版本提供了一个漂亮的在线帮助系统,如果没用过可以去试试看。只要在交互的Python解释器提示符下键入help(),就可以启动帮助系统。
·你的Python安装版本中所含的部分在线文档。ActivePython的安装程序,包括了一个可以搜索的Windows帮助文件。虽然当前标准的Python发布包只是提供HTML页面,但是已经有计划要在将来的版本中提供一个类似的Windows帮助文件。
在引用Python的标准文档时,我们没有加入章节数字来进行标记,因为这些文档总是随着版本的变化而变化的。可以通过查看内容目录和索引来找到相关材料。对于“Library Reference”而言,模块索引(所有标准库模块的字母表顺序列表,每个模块名都是一个可点击的超链接,指向了“Library Reference”文档中对该模块的介绍)非常有用。同样地,我们在引用Python in a Nutshell的时候,也没有给出确切的位置:在本书编写过程中,那本书还只是第1版(仅仅覆盖到Python 2.2),当你开始阅读本书的时候,第2版的Python in a Nutshell(覆盖Python 2.3和2.4)如果还没有出版,也应该近在咫尺了。
阅读须知
宣告 书中的第一人称单数,是指该材料或者章节引言的执笔人(当一段材料的致谢针对多个人的时候,作者被放在首位)。由于有很多评论的内容也被融入文中,因此原作的某些意思可能难以充分地表达出来(作为编辑,我们尽量避免这种状况的发生,但我们知道一定会有疏漏的地方,因为评论的内容非常多,而原作的意思有时也不是很清晰)。而第二人称则是代表你,本书的读者。第一人称的复数也是指你,本书的读者,但还包括了本篇材料的作者和合作者、本书的编辑还有我的朋友Joe(Hi Joe!),总而言之,那个词的包容性非常强。
代码 每段代码都代表着一段完整的脚本或者一个模块(通常,Python的源码文件可以被当作脚本或者作为模块来复用),或者从某个假设的模块或脚本中抽取的片段,或者只是从Python的交互解释器中提取的部分(通常会带有一个]]]提示符)。
如何与我们联系
我们已经尽力验证和检查全书,但你仍有可能发现某些语言特征已经发生变化了,或者你可能会发现我们忽略的一些错误。如果是这样,请与我们联系,告诉我们你发现的错误,当然我们也欢迎好的建议,来信请寄:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
100080北京市西城区西直门成铭大厦C座807室
奥莱利技术咨询(北京)有限公司
我们为本书建立了一个网站,列出了相关示例、戡误表以及本书下一版的计划。可以通过下面的网址访问:
http://www.oreilly.com/catalog/pythoncook2
关于此书的任何问题或者评论,请发信到:
bookquestions@oreilly.com
关于我们的出版物的更多信息、参考、资源中心以及O’Reilly Network,请访问:
http://www.oreilly.com/
提供本书绝大部分素材的在线cookbook可通过下面网址访问:
http://aspn.activestate.com/ASPN/Cookbook/Python