python 2.x 和 3.x 系列 —— 今日故事 | 前言 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-大发黄金版app下载
在 2013 年编写第五版的时候, python 已升级到 3.3 和 2.7 版本。但是 2.x/3.x 的故事仍然几乎没有改变。事实上, python 现在是一个双版本的世界,许多用户根据它们软件的目标和依赖同时运行 2.x 和 3.x 。对于许多新手来说,在 2.x 和 3.x 中的选择仍然存在——现存软件对语言的最新技术。虽然许多主要的 python 包都已经移植到 3.x,但是目前仍然有许多其它(包)只在 2.x 上。
对于一些观察家来说, python 3.x 现在被视作探索新想法的沙盒,而 2.x 被视为久经证明的 python,它没有 3.x 的所有功能,但是仍然使用得更广泛。其它人仍然认为 python 3.x 是未来,一个观点似乎被当前的核心开发者计划所支持:python 2.x 将继续被支持,但它是最后的 2.x 然而 3.3 是 3.x 系列持续进化中最新的版本。另一方面,像 pypy 这种提议——现在仍然只是一个 2.x 的 python 实现,它提供了非常好的性能提升——如果它不代表一个完全的派系,那么就代表了 2.x 的未来。
搁置所有的意见,在 3.x 发布 5 年后,它的用户基数还是没有超过甚至是匹配 2.x 的。作为一个指标,2.x 目前在 python.org 上 的 windows 平台 的下载量 仍然比 3.x 的要多,尽管事实上这个标准会自然地倾向于新用户和最近的发布。当然,这种统计是很容易改变的,但在 5 年后(还是如此)表明了 3.x 的普及(不如预期)。现存的 2.x 软件基础仍然超过 3.x 的语言扩展许多。而且,作为 2.x 系列的最后一个版本,使得 2.7 处于某种事实上的标准,而不会被 3.x 系列中持续地更改所影响——这对那些寻求稳定版本的是一个好事,但是对那些寻求增长和持续相关的人是一个坏消息。
个人来说,我认为今天的 python 世界已经大到足够同时容纳 3.x 和 2.x;它们看起来满足不同阵营的目标和需求。而且对于这种现象在其它语言家族中也有先例(比如 c 和 c 就有长期的共存。虽然它们之间的不同比和 2.x 和 3.x 的不同更多)。而且因为它们如此相似,通过学习任一 python 系列获得的技巧,几乎能完全地转换到另外一个系列。特别是如果你被像本书这样的双版本资源帮助的话。事实上,只要你懂得它们是如何出现分歧的,通常是可能写出在两个版本上都能运行的代码。
同时这个分歧让程序员和图书作者处于两难境地,而且没有减弱的迹象。虽然对一本书来说,假装 python 2.x 从来不存在,然后只讲解 3.x 会更容易,但是这不会解决目前存在的庞大的 python 用户群的需求。大量现存的代码是为 python 2.x 写的,它不会在短期内消亡。虽然一些语言的新手能够并且应该主要关注 python 3.x,但是任何必须使用老代码的人目前都仍需要保持一只脚在 python 2.x 的世界。许多第三方的库和扩展被转移到 python3.x 还有几年,这个分歧可能不会是完全临时的。