毋庸置疑:2.x是现今Python的流行版本,而Python的3.x的是作为新事物出现的。
在撰写本文的时候(2010年7月4日),最后2.7版本已经发布,此版本将作为2.x的最后一个发行版本。 而3.x的正在积极与持续的发展,3.1和3.2版本将在的岁末年初发布。(
原文地址)
3.x的是Python的最新语言版本以及代表未来的发展趋势。 Guido van Rossum(Python语言的原创者的)决定恰当的调整Python2.x,放弃在新版本中对2.x的兼容。调整核心语言
的一些方面(如打印和exec被声明,使用floor整数除法等),使得新的python语言学习者更加方便快捷。 它也允许新的语言特性能够适应于旧的语言当中,例如2.x版本的返回
list范围range函数,新版本中可用更有效的iterable。
python3.0的新特性一文中描述了新旧版本中主要不兼容的语言变化。
然而,大多数的基于Python2.x的应用系统已经积累了多年,大量高质量的软件广泛存在。 在3.x中,打破向后兼容性的弊端是很多的,许多软件将不能在3.x直接工作。
那么,我应该使用哪个版本?
对于版本的选择,将取决于你想要干什么。
如果你清楚自己使用3.x来做什么,那太棒了! 当然这有一些相对限制,如库的支持,事实上,目前的Linux发行版和Mac在默认情况下仍然允许2.x,但Python 3.x也已经就绪。
只要你使用Python 3.x的计算机满足环境支持以及你写的程序并不过度的依赖第三方软件包(或你已经知道需要的软件包已经支持Python 3),那么Python的3.x版本将是一个很好
的选择。此外,不少应用程序3.x的发布版本已经包含了Python运行环境,即使用户并没有相应的python运行环境。
然而,有一些关键问题,可能需要使用Python 2而不是3。
首先,如果你要部署应用到一个新的环境中,你无法控制运行环境。
其次,如果你想使用一个具体的第三方包或工具,但是还没有发布版本是使用Python 3。
热门模块许多还不支持Python 3包括Twisted ,gevent,Django,PyGTK,PySide ,py2exe等等
但这些库大部分已经开始对3.x的支持工作,它主要是开发进程中。 对于一些库,它的优先级比别人更多:Twisted ,例如,主要是在生产服务器,其中老版本的Python支持的重
点是重要的,更不用说支持新版本,其中包括对语言的重大变化。
当然,很多包已经被移植到3.x的 例如,人们想要GUI功能可以使用 PyQt的 , PyGobject 或Tkinter的。 而对于数字运算,numpy支持Python 3。
Python 3中的一个选择问题是,在网络上的参考书籍(包括例子)有很多的Python 2。 同样,对于那些愿意寻求通过IRC的帮助下,通常经验丰富的软件开发人员可以在传统的依
靠谁,其中大部分还没有被移植。 因此,他们可能无法帮助与Python 3.x的问题或有关的问题,已被移植到3.x以及它们与其他可比2.x的问题可能库。 当然,这种情况正在不断
改善,有些问题作为3.x的特定并不像你想象的。 尽管如此,还是有很大的帮助的来源,如comp.lang.python上,这是有可能的3.x的用户谁能够帮助你解决任何难题很多。
Python 3的移植现状
事实上2与3的学习并不是完全矛盾,我们可以使用py2to3工具进行转换,使其能够在python3工作,当然,也能够使用py3to2进行转换,或许这样的使用者是寥寥无几。