Python是一门强大的多范式计算机编程语言,它以程序员的多产、代码的可读及软件的高质量开发为目标而不断优化。
本书对Python语言本身进行了全面而深入的介绍。目标是帮助你在工作中真正使用Python之前,掌握Python的基本原理并做好充足的准备。秉承本书前四版的一贯思路,本书这一版同样是所有Python初学者的福祉,本书是一个独立的、全方位的学习资源,不论你将来使用Python 2.X、Python 3.X或两者兼有。
本书第5版已经更新到Python的3.3和2.7发行版,并且进行了充分扩展以反映当今Python世界中的一线实践。
这里的前言部分较为翔实地讲述了本书的目标、大纲以及结构。尽管是选读材料,但是它旨在协助你开始本书旅途之前,拥有一个大致的导览。
【本书的结构】
为了帮助你上手,本节提供了本书所有主要部分内容和目标的一个快速概要。如果你万分焦急,想要开始本书的学习,你大可略过这一节(或浏览全书目录)。然而,对于一些读者而言,这样大部头的一本书非常值得拥有一张预先的简明路线图。
经过构思,每一部分都涵盖了这门语言的一个主要功能区,而每一部分都由若干章组成,这些章节聚焦于本部分功能区的一个特定主题或方面。此外,每一章以习题及其答案结束,而每一部分以更大型的练习题结束,练习题的解答在附录D中给出。
注意: 实践很重要:我强烈推荐读者完成本书中的全部测试题与练习题。在编程领域,没有任何事物能够替代将你的所读付诸实践。无论你在本书中或你自己的项目中是否践行这一点,实际编写代码都能有效地帮你加深和强化书中提到的思想。
总体上讲,本书的组织形式是自底向上的,因为Python语言本身也是如此。随着我们不断前进,书中的示例与主题也将变得越来越有挑战性。例如,Python的类基本上仅仅是处理内置类型函数的包。一旦你掌握了内置类型和函数,理解类就相对容易了。由于每一部分都建立在位于其之前的、逻辑相关的部分之上,对于绝大多数读者来说,按顺序阅读才是最合适的。以下是你将学习的本书主要部分的预览:
【第①部分】
我们以Python的一个总体概览开始,其中回答了经常会被问到的初步问题——为什么人们使用这门语言,它能做些什么,等等。第1章介绍了潜藏于技术之下的主体思想,为你提供一些背景知识。本部分的剩余章节将继续探讨Python以及程序员运行程序的方式。主要目的是为你提供充足的信息,以便你能跟上随后的示例与习题。
【第二部分】
接下来,我们开始Python语言之旅,深入学习Python的主要内置对象类型如数字、列表、字典等,以及利用它们所能做的事情。你可以单独使用这些工具完成很多事情,而它们是每段Python脚本的核心。这是本书最重要的部分,因为这部分为随后的章节奠定了基础。我们还将在这一部分探索动态类型及其引用(这是用好Python的关键)。
【第三部分】
这一部分我们将继续介绍Python的语句,即你输入并创建的代码,同时还将在Python中处理对象。这一部分还介绍了Python的通用语法模型。尽管本部分关注于语法,但是它也介绍了一些相关的工具(如PyDoc系统),第一次引入迭代的概念,并探索了编程替代方法。
【第四部分】
本部分开始关注Python中较高层次的程序结构工具。函数其实是打包代码并重用的一种简单方式,它避免了代码冗余。在本部分,我们将探索Python的作用域规则、参数传递技巧,以及时常为人不齿的lambda表达式等。我们还将以函数式编程的视角回顾迭代器,引入用户定义的生成器,并学习如何为Python代码计时以测试代码性能。
【第五部分】
Python模块允许你将语句和函数组织为更大的组件,本部分展示了如何创建、使用以及重新加载模块。这里我们还将关注一些更高级的主题,如模块包、模块重新加载、包相关导入、3.3版本的新命名空间包,以及__name__变量。
【第六部分】
这里,我们探索Python的面向对象编程工具,类——一种可选但是强大的组织代码以便定制和重用的方式,使用它能自然地将代码冗余程度降到最低。正如你将看到的,类几乎都会重复使用我们到本书目前为止所介绍的思想,而Python中的OOP基本上就是关于在相互链接的类组成的类树中查找名称,以及在类的方法中特殊的第一位参数self。正如你还将看到的,在Python中OOP是可选的,但是大部分人都觉得Python中OOP的简洁性远胜于其他语言,而且OOP还能够极大地削减开发时间,尤其对于长期的战略项目研发更为明显。
【第七部分】
本部分将总结本书关于语言基本原理的介绍,并关注Python的异常处理模型及语句,同时对开发工具进行一个简明概览。当你开始编写大型程序时,这些工具将变得更加有用(例如调试和测试工具)。尽管异常是一种相当轻量级的工具,但把这一部分安排在类后面讨论,是由于用户定义的异常在现在的Python版本中本质上都是类。这里我们还介绍了一些更高级的工具,如上下文管理器。
【第八部分】
在最后这个部分,我们会探索一些高级主题:Unicode与字节串、诸如property和描述符的属性管理工具、函数装饰器和类装饰器以及元类。这些章全部是选读的,因为不是所有程序员都需要理解它们所应对的课题。另一方面,必须处理国际化文本或二进制数据的读者,或需要开发供其他程序员使用的API的读者,应该会在本部分发现一些有用的内容。这部分的示例也比本书中的大多数示例庞大,因此能充当自学材料。
【第九部分】
本书以四个附录的组合圆满结束,它们给出了在不同计算机上安装和使用Python的特定平台相关的小窍门;展示了Python 3.3配备的新Windows启动器;总结了本书最近几版涉及的Python版本中的更改,并给出了相关网上资源的链接;提供了每部分末尾练习题的解答。而每一章的“本章习题”的答案则出现在对应的章节中。
你也可以参看目录,以获取对本书组成更加细粒度的概览。
【对于有经验的程序员】
你拥有起初的优势,并能够迅速翻阅一些靠前的章节;但是你不应该跳过其中的那些Python专属的核心思想,并可能需要努力放下一些既有的“经验”。笼统地讲,在本书之前接触任何编程或脚本语言都是有帮助的,因为这能帮助你形成类比。另一方面,我还发现由于在其他语言中根植的成见,先前的编程经验也可能成为一种阻碍。(根据所写的第一份Python代码,认出课堂中的Java或C++程序员真是太容易了!)要用好Python需要你接纳它的思维模式。通过着眼于关键的核心概念,本书旨在以Python的方式来帮助你学习编写Python代码。
【对于真正的初学者】
在本书中你能同时学习Python以及编程本身;但是你可能需要更加努力一点,而且需要参考阅读其他更加容易的介绍资料来辅助学习。如果你还没有把自己当作一名程序员,你也有可能发现本书会帮到你,但是你要确保缓慢地前进,并且一路认真完成示例和习题。还要牢记,本书会花比讲授编程基础知识更多的时间来讲授Python本身。如果你发现自己因困惑而迷失在这里,我鼓励你在着手阅读本书之前,先了解一下通用的编程导论。Python官方网站提供了许多面向初学者的有用资源链接。
正式地讲,本书旨在成为所有初学者的第一个Python读本。对于一些之前从没有接触过电脑的人,它可能不是一种理想资源(例如,我们不会花费任何时间来了解电脑是什么),但是关于你的编程背景和学历,我没有做过多假设。
另一方面,我也不会把读者当作“傻瓜”来事无巨细地解释所有细节,毕竟在Python中做些有用的事很容易,而本书将会指引你怎样做。书中也偶尔会拿Python同其他语言(如C、C++、Java)做对比,但是如果你过去没有使用过这样的语言,你大可放心地忽略这些比较。