前言的引言

如果你正站在书店寻找这本书的精简版本,请尝试:
  • Python 是一门强大的多范式的计算机编程语言,针对程序员生产力、代码可读性和软件质量做了优化。
  • 本书提供了对 Python 语言本身的全面和深入介绍。其目标是帮助您在进一步应用它们之前掌握 Python 基础知识。与它之前的所有版本一样,本书旨在为所有 Python 新手提供单一的、全面的学习资源,无论他们是否将使用 Python 2.X,Python 3.X 或两者。
  • 这个版本已经升级到最新的 Python 3.3 和 2.7,并且已大幅扩展来反映 Python 世界的当前实践。
这个前言详细描述了本书的目标,范围和结构。这是可选的阅读内容,但旨在为您开始阅读本书提供一些整体指导。

本书的生态系统

Python 是一种流行的开源编程语言,用于各种领域的独立程序和脚本应用。它是免费的、可移植的、功能强大的,既相对容易,又用起来非常有趣。来自软件行业各个角落的程序员发现,Python 对开发人员生产力和软件质量的关注是大大小小的项目中的战略优势。 无论您是新手程序员还是专业开发人员,本书旨在使您快速了解 Python 语言,这里更有限的方法无法做到的。阅读完本书后,您应该已经了解足够的 Python 知识,可以在您选择探索的任何应用领域中应用它。 按照设计,本书是一本教程,强调核心 Python 语言本身,而不是它的特定应用。因此,本书旨在作为一套两卷书中的第一卷:
  • 《学习 Python》,本书,教授 Python 本身,重点关注跨领域的语言基础。
  • 《编程 Python》等,接下来展示您在学习 Python 后可以做什么。
这个分工是故意的。虽然应用目标可能因读者而异,但对有用的语言基础覆盖的需求并不变。像《编程 Python》这样专注于应用程序的书在本书结束后继续进行,使用实际规模的例子探索 Python 在 Web、GUIs、系统、数据库和文本等常见领域中的作用。另外 Python Pocket Reference 这本书提供了没有包括在这里的参考资料,它旨在补充这本书。 然而,因为本书主要关注基础,它能够比许多程序员第一次学习这个语言时看到的更加深入的介绍 Python 语言基础,它从底向上的方法和独立的教学示例旨在一步步的向读者教授整个语言。 在这个过程中,你将获得的核心语言技能将适用于你将遇到的所有 Python 软件系统 —— 不管是当今流行的工具,比如 Django, Numpy 和 App Engine,还是 Python 未来和您的编程生涯的一部分。 由于它基于为期三天的 Python 培训班,并在整个过程中进行测验和练习,所以本书也可作为自学式语言介绍。尽管它的格式缺少班级的实时交互,但它通过书籍所能提供的额外深度和灵活性来进行补偿。尽管有很多方法可以使用本书,但按顺序阅读的读者会发现它大致相当于一个学期的 Python 课程。

关于第五版

本书的第四版于 2009 年出版,涵盖 Python 版本 2.6 和 3.0 [1],它解决了 3.X 线中引入的许多有时不兼容的变化。它还介绍了一种新的 OOP 教程,并介绍了有关高级主题的新章节,如 Unicode 文本、装饰器和元类,这些主题源于我教的实际类和 Python “最佳实践” 的发展。 完成于 2013 年的第五版是对前一版本的修订,更新为涵盖 Python 3.3 和 2.7,即 3.X 和 2.X 线中的最新版本。它包含了自前一版本出版以来每条线路中引入的所有语言变化,并且在整个过程中得到了改进,以更新和提高其呈现方式。具体来说: 注 [1]: 2007 年的短暂的第三版包含 Python 2.5 和它更简单,更短,单行的 Python 世界。这些年,本书的大小和复杂度上一直与 Python 自身的增长成正比。根据附录 C 仅 Python 3.0 就在语言中引入了 27 个增项,57 个更改,这些变化都被收录在本书中。Python 3.3 持续了这个趋势。今天的 Python 程序员面临两个不兼容的路线,三个主要范式,非常多的高级工具,还有纷繁杂乱的功能冗余 —— 大部分在 2.X 和 3.X 线路之间不能很好地划分。这可能没有听起来的那么可怕(许多工具是主题的变化)。在一个包容性强、全面的 Python 文本里,所有这些都是公平的。

关于第五版 —— 具体的变更

具体改变有:
  • 这里的 Python 2.X 覆盖范围已更新,包括诸如字典和集合理解之类的特性,它们以前仅用于 3.X,但已经回流到 2.7 中使用。
  • Python 3.X 的覆盖范围已经增加了新的 yield 和 raise 语法;<font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">__pycache__</font> 字节码模型;3.3 命名空间包;PyDoc 的全浏览器模式;Unicode 字面量和存储变化;以及随 3.3 一起发行的新 windows 启动器
  • 添加了各种各样新的或扩展的 JSON, timeit, PyPy, os.popen, generators, recursion, weak references, <font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">__mro__</font>, <font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">__iter__</font>, super, <font style="color:rgb(133, 128, 128);background-color:rgb(249, 250, 250);">__slots__</font>, metaclasses, descriptors, random, Sphinx 等的覆盖范围,并且在示例和叙述中增加了 2.X 兼容性。
这个版本还添加了一个新的结论作为第 41 章(关于 Python 的发展),两个新的附录(关于 Python 最近的变更和新的 windows 启动器),还有一个新的章节(关于基准测试:以前的代码计时例子的扩展版本)。在前一个版本和这个版本之间 Python 改变的精确总结以及它们在本书中的链接,请参见附录 C 。附录还概述了 2.X 和 3.X 之间的初始差异,这些差异在上一个版本中已经首次提到,虽然有一些差异,比如新样式类,跨越了版本,并且简单地在 3.X 中变成了强制的(关于 X 的意义,请稍后再看)。 根据前面列表的最后一条,这个版本也经历了一些增长,因为它为更高级的语言功能提供了更全面的覆盖 - 过去十年中,我们中的许多人都一直努力将它们作为可选项来忽略,但是它们现在在 Python 代码中更常见。正如我们将看到的,这些工具使 Python 更强大,但也提高了新手的门槛,并可能改变 Python 的范围和定义。因为你可能遇到任何一个,所以这本书直接涵盖了它们,而不是假装它们不存在。

关于第五版 —— 覆盖过去,适用于未来

尽管有了这些更新,此版本还是保留了之前版本的结构和内容,并且还是设计为一个全面学习 Python 2.X 和 3.X 系列的资源。虽然它主要关注 Python 3.3 和 2.7 的用户 —— 3.X 系列的最新版本和 2.X 系列的很可能的最后一个版本。但是它历史性的角度也使得它与那些现在仍看得到的经常使用的更老的 Python 相关。 虽然不可能预测未来,但本书强调了过去 近 20 年一直有效的基础,并且也很可能将应用到未来的 Python。就像往常一样,我将在之前描述的这本书的网站上贴出 影响本书的 Python 更新。 Python 手册集里面的 “What’s New” 文档也能够用来填补这些(与最新功能之间的)空白,因为 Python 在本书出版后是肯定会进化的。