者也会发现,很多关于原本核心语言的讨论在本书中有了实质性的扩展,增加了新的 讨论内容和例子。因为本书已成为学习核心 Python语言的标准资源,介绍时我有意地让 内容更加完整,使用了新的案例来进行扩展 此外,本书也整合了新的 Python技巧和窍门,这是我在过去10年中,从课堂上授课以及 过去15年使用 Python从事实际工作所收集来的。练习题已做了更新和扩充,来反映当前 Python的最佳实践、新的语言特性以及课堂中所遇到的初学者常犯的错误。总之,本书 所讨论的核心语言内容比之前的版本更多,不仅仅是因为 Python变得更大,还因为我增 加了一些在实际应用中证实了相当重要的脉络信息。 本书结构性变化 和上一版一样,为了适应本书当前更为完整的事实,书的内容经过了合理的划分。也就 是说,我把核心语言题材组织成许多章节,让内容更易于理解。例如,类型和语句现在 是两个顶层的部分,每种主要类型和语句话题都有一章。这种新结构的设计,是为了在 本书中多讲一些内容,而又不会让读者产生恐惧。在此过程中,练习题和“陷阱”(常 见的错误)则从每章的结尾移到了每部分结尾,现在它们出现在每部分最后一章的结尾 在第三版中,我也增强了每部分结尾处的练习题和每章结尾的小结以及毎章结尾的习 题,来帮助读者在做完那些题目后,可以达到复习章节的效果。每章的最后都有一组问 题,来帮助读者复习和测试对该章内容的理解。练习题解答在附录B。即使读者保证能 够正确回答问题,我还是鼓励读者去看一看解答,因为答案本身就是一种复习 尽管有这些新主题,本书仍然是面向 Python初学者的,其设计目标就是要作为程序员学 习 Python语言的首选书籍(注1)。本书保留前两版的许多题材、结构和焦点。在适当的 地方,我会为初学者扩展简介的内容,同时把更高级的新话题和讨论的主线隔离出来, 以免掩盖了基础知识。另外,因为本书绝大部分是采用经过时间检验的培训课程的经验 和题材编写的,就像前两版那样,仍然可以作为自学 Python的入门教材 注1:所谓的“程序员”,是指的是过去以任何桯序语言或脚本语言鎬写过一行程序代码的任 何人。如果这不包括你在内,你还是可能会觉得这本书有些用处,但是,要注意一点 本书会花很多时间教投 Python的知识,而不是谈论编程基础。 www.iopsage.com 前言|3
www.TopSage.com
本书的范围变化 编写第三版的目的是将其作为核心 Python语言的教程,仅此而已。首先要深入学习这门 语言,然后学习应用层面的编程应用。本书的介绍是由下至上并且是循序渐进的,不 过,本书会对整个语言进行概述,独立于其应用角色之外 对某些人而言,“学习 Python”就是花一两个小时在网络上看一看教程。对于已经是高 级程序员的人来说,这样行得通,毕竞和其他语言相比, Python确实简单得多。这种走 捷径的问题在于,这些实习生最终可能会在不寻常的情况中跌倒而被卡住:变量变了 可变默认参数值的变化难以理解等。本书的目标是提供扎实的 Python基础知识,即使发 生不寻常情况时,也能够理解。 这种范围应该慎重。我们把注意力集中在语言基础上,就能以更加令人满意的深度 研究这些主题。其他书籍,例如, OReilly的《 Programming Python》、《 Python Cookbook》、《 Python in a Nutshell》以及《 Python Pocket Reference.》,则补充了本 书的遗漏,对应用层面的主题和参考材料提供更完整的说明。本书的目的是致力于教授 Python,以便能够将其应用在读者所从事的任何领域中。 因为本书的侧重点有所变化,上一版中有些参考内容和更高级内容的章节(大约占上 版的15%)已被去掉,扩充了核心语言的章节。这样一来,本书的读者会发现对核心语 言有了更完整的介绍,使得本书成了更实用的 Python书籍。本版中加入了一些更高级的 例子,作为读者自学的程序,也当作最终的练习题(参考第29章) 关于本书 本部分强调了本书的一般性重点,和本书的版本无关。没有哪本书可以满足每一位潜在 的读者,所以阅读之前了解编写本书的目标是很重要的 事前准备 事实上,使用本书确实没有什么绝对的先决条件。初学者和功底深厚的编程高手都可以 成功地使用本书。如果打算学习 Python,本书可能就适合你。不过,一般来说,我发现 在使用本书之前有过任何编程或脚本经验的读者,会有些帮助。但是,并不要求每位读 者都得这样。 本书是作为程序员学习 Python的入门书籍来设计的。对于那些从来没有接触过计算机的 人,可能就不适合(例如,我不会花时间讨论计算机是什么)。但是,这并不意味你需 要有编程的背景或教育 4|前言 www.topsage.com
www.TopSage.com
另一方面,我不会假设读者什么都不懂而冒犯了读者:使用 Python来做有意义的事,这 两 很容易,而本书就是要教读者怎样做。本书有时会用 Python和C、C++、Java以及 Pascal 语言来做比较,但是如果读者过去没有使用过这些语言,则完全可以放心地忽略这些比om 本书的范围和其他书籍 虽然本书涵盖了 Python语言所有的基本内容,但基于速度和篇幅的考虑,我还是把本书 的范围缩小了。为了让事情简单化,本书关注核心概念,使用小并且独立完备的例子来 示范重点知识,并且有时省略了可以在参考手册中找到的细节。因此,把本书当作通往 更高级应用的垫脚石和完整的入门书籍再好不过了。 例如,我们不会谈太多的 Python/C集成,这个复杂话题显然是许多基于 Python的系统的 核心。我们也不会谈太多 Python的历史或发展过程。对于流行的 Python应用程序也只简 单浏览而已,例如,GUI、系统工具以及网络脚本机制,而有的则根本不提。显然,这 会漏掉整体内容的一部分 从整体上来说, Python是为了让脚本世界的质量等级再提升几个级别。而 Python的有些 观念需要的背景环境,不是这里所能提供的,如果没有推荐读者读完此书后进行更深入 地学习,那就是我的疏忽了。我希望本书的绝大多数读者最终都可以继续走下去,从其 他书籍完整了解应用层面的编程技术 因为本书关注的是初学者,设计上自然是和 O'Reilly其他 Python书籍互补。例如,我 编写的另一本书《 Programming Python》,提供更大并且更完整的例子,还有应用程序 编程技巧的教程,而且我有意将其设计为读完此书后的后续书籍。概括地说,本书的目 前版本和巛 Programming Python》反映了作者培训内容的两部分:核心语言和应用程序 程序设计。此外, O'Reilly的《 Python Pocket Reference》也是搜索本书忽略的一些细节 的快速参考手册。 其他后续的书籍也可提供参考、附加的例子或者于特定领域中(例如,《Web开发和 GUI》)使用 Python的细节。例如, OReilly的《 Python in a Nutshell》以及Sams的 《 Python Essential Reference.》提供了参考,而 O Reilly)的《 Python Cookbook》为那些已 熟识应用程序设计技巧的人,提供了独立完备的例子。因为别人对书籍的评价是很主观 的,我鼓励读者亲自浏览这些书,来选择满足自己需求的进阶书籍。不过,无论选择哪 本书,要记住, Python其余内容所需学习的例子都相当实际,以致于这里没有空间能够 容纳。 www.topsage.com 前言|5
www.TopSage.com
尽管这么说,我想读者还是会发现本书是作为学 Python的首先书籍,虽然范围有限(也 许也正是因为如此)。你会学到初学阶段编写独立的 Python程序和脚本所需要的一切。 当你读完本书时,不仅学到了语言本身,也会学到如何将其合理地运用于日常工作中 去。此外,当读者遇到更高级的主题和例子时,将会有足够能力去解决它们。 本书的风格和结构 本书是基于为期3天的 Python课程的培训材料编写而成的。每章末尾有本章对应的习题 并且在每部分最后一章末尾有本部分对应的练习题。习题和练习题的解答在附录B。习 题可以帮助读者复习的内容,而练习题引以帮助读者以正确的方式编写代码,而且这通 常也是该课程的重点之一 我强烈建议做一下习题和练习题,不仅是为了积累 Python编程的经验,也是因为 习题会引出本书没有涉及的主题。如果碰上难题,附录B的解答应该可以帮助你 我也鼓励你尽量地阅读那些解答)。 本书的整体结构也是来自于课程的培训材料。因为本书是用来快速地介绍语言的基础 的,我是以语言的主要功能进行组织并介绍的,而不是以例子为主。我们采用了由下至 上的手法:从内置对象类型,到语句,再到程序单元等。每章都比较完备,但是后续的 章节会利用到前面章节所介绍的概念(例如,谈到类时,我假定你已经知道如何编写函 数),所以对多数读者来说,循序渐进应该是最合理的阅读方法 一般来说,本书用由下至上的方式介绍 Python语言,以一部分谈一种主要语言功能(类 型以及函数等等)来组织结构,并且多数例子都很小,它们都是独立完备的(有些人可 能会说本书的例子显得空洞,但是,这些例子都是为了说明知识点而设计的)。更确切 地说,本书内容如下 第1部分,使用入门 我们以概览 Python作为开始,来回答一些常见的问题:为什么要使用这门语言、它 有什么用处等。第1章介绍这门技术背后的主要思想,以及历史背景。然后,介绍 本书技术方面的内容,我们会探索 Python运行程序的方式。介绍这一部分的目标是 让读者有足够的知识,可以跟上后面的例子和练习题的步伐 第2部分,类型和运算 接着,我们开始 Python语言之旅,深入研究 Python的主要内置对象类型:数字、列 表和字典等。使用这些工具,就可以用 Python做很多事了。这是本书最重要的一部 分,因为部分内容这是学习后续章节的基础。我们也会在此部分谈到动态定型和其 引用值:这是掌握用 Python的关键。 6|前言 www.iopsage.com
www.TopSage.com
第3部分,语句和语法 本部分开始介绍 Python的语句:输入的代码会在 Python中创建并处理对象。此外, 本部分也会介绍 Python的一般语法模型。虽然这一部分的重点是语法,但也会介绍 相关的工具。例如, Py Doc系统,并探索其他一些编写代码的方法 第4部分,函数 在这一部分开始讨论 Python的更高层次的程序结构工具。函数是为重用而打包代码 并避免代码冗余的简单方式。在这一部分内容中,我们将会探索 Python的作用域法 则、参数传递等技术 第5部分,模块 Python模块把语句和函数组织成更大的组件,而这一部分会说明如何创建、使用并 重载模块。我们也会在这里看到一些更高级的主题,例如,模块包、模块重载以及 name 第6部分,类和OOP 在一部分,我们探索了 Python的面向对象编程(OOP)工具类—类是选用的, 但却是组织代码来定制和重用的强大工具。读者将会看到,类几乎是重复利用在本 书中谈到的概念,而 Python的OOP多数就是在链接的对象中查找变量名。读者也会 了解到,OOP在 Python中是选用的,但是可以减少大量的开发时间,尤其是对长期 的策略性项目开发来说。 第7部分,异常和工具 本书最后一部分讨论 Python异常处理模型和语句,加上对开发工具的简介(当读者 开始编写较大的程序时,工具就会变得更实用。例如,调试和测试工具)。这一部 分放在最后,是因为异常现在应该都是类了。 第8部分,附录(附录内容请到华章网站下载) 本书结尾是两个附录,介绍了在各种计算机上使用 Python的与平台相关的技巧(附 录A),并提供了每章结尾习题和每部分末尾的练习题的解答(附录B)。 注意:索引和目录可用于查找细节,但本书没有参考文献附录(本书是教程,而不是参 考书)。就像之前提到的一样,读者可以参考《 Python Pocket Reference》( O'Reilly) 还有其他书籍,以及免费的Python参考手册(参看htp:/www.python.org)来了解语法和 内置工具的细节 www.topsage.com 前言|7
www.TopSage.com