我已经学习了一些Python 2和Python 3,看起来Python 2整体上比Python 3更好。所以这就是我的问题所在。有没有什么好的理由真正切换到python 3?< / p>
答案 0 :(得分:32)
总的来说,甚至在大多数细节中,Python3都比Python2更好。
Python 3滞后的唯一区域是关于第三方库。
使Python变得更好的不仅仅是它作为一种语言的内在特征它还有相当广泛的标准库,但也存在一个完整的“生态系统”库,它们支持语言的许多特定应用。
目前有几个这样的库没有完全移植到Python 3.x,这有时会导致人们在Python 2.x下继续开发。
这种情况看起来有点像鸡和鸡蛋的问题:应用程序开发人员不会移动到3.x直到库“到达那里”,库开发人员宁愿只维护一个分支和正在等待尝试将移植到Py3k的时间,以便他们可以在不久之后将他们的Py2.x分支机构放入维护。
这种情况在某种程度上证明了人们对Python 2.x的满意度(或者更为消极地表达了对于向3.x移动的真正引人注目的激励;而Py3k是为了更好的东西更好和更好,因为它没有任何功能会促使转移到3.x“ en masse ”。)这说,我相信动力有效地支持Python 3 。
为了支持这一点,我提到了 Unladen Swallow 仅被移植到Py3k的可能性,为此举提供了一些强烈的动力。但Alex Martelli已经开始回答这个问题了,并且正在使用这个例子。显然,亚历克斯第一手说出这些路线图问题,请从师父那里得到它!
关于Py3k版本的提醒:请务必使用最新版本(目前为3.1.2,很快3.2.x将替换为最新版本) 稳定版本。)请注意,有些人(像我一样)偶尔会使用表达式"3.0"
来引用所有Py3k的通用名称(甚至是当前版本的通用名称)。短命的3.0版本 per-se 现在已经“解散”并且没有兴趣,但可能是法医专家; - )
答案 1 :(得分:19)
正如其他答案所提到的,Python 2相对于Python 3唯一真正(且至关重要)的当前优势是前者已经拥有大量第三方扩展(以及辅助工具,如IDE等),后者只是逐渐走向。随着现有扩展的移植以支持Python 3,这种情况正在逐步改善;迟早有人会发布一个对你来说很重要的Py3专用扩展或工具,这可能会让你倾向于实际使用Py3来实现一个新项目(对于许多不同的“你”来说会发生这种情况; - )。< / p>
Python核心开发主要转移到Python 3领域 - 而Python 2.7即将推出,我不确定未来有多少重要的增强功能(如果有的话)将继续向后移植到Python 2版本。特别是,我怀疑Unladen Swallow会 - 如果是这样的话,那么在某些时候CPython 3将获得比CPython 2更重要的速度优势,CPython 2将是其他新项目(和现有端口)的翻倒因素项目)。
不确定是什么让你觉得“Python 2比Python 3更好”,当然,只是“Python本身”,即Python软件基金会发布的部分(核心代码) ,图书馆,文档...):我非常不同意这种评估。 Python 3在简单性(删除)方面更好,并且具有一些能够支持未来第三方扩展和工具的功能(例如更好的元类交互和参数annoutation语法);事实上,就“Python本身”而言,我无法找到Python 2的任何优势。正如已经讨论的那样,围绕Python的“生态系统”是另一回事,但这已经在进步(当然,按照自己的步调,在Python软件基金会的控制下,它肯定不是不是,而是许多外部开发人员和一些公司)。
例如,PyQt已经可用于Python 3(以及2),你可以通过py-postgresql使用PostgreSQL(一个出色的开源SQL数据库引擎,比MySql更标准)。所以,如果你想要的第三方扩展是(例如)wxpython和mysqldb,也许你可以尝试这些替代方案(当然,我有偏见,因为我很早就喜欢Qt到wxWidgets,而PostgreSQL到MySQL,纯粹基于技术理由 - 但是相关Python扩展到Python 3的快速移植也暗示这些扩展正在更加积极和有力地开发,因此可能是尝试它们的另一个推动; - )。
答案 2 :(得分:7)
Python 3将成为未来的新标准。
由于不会很快对Python 3进行大规模的彻底改变,更多的人最终会转向它。所以......虽然现在有很多Python 2应用程序,但最终会迁移出许多这些应用程序。甚至还有工具,2to3。
另外,是什么让你说python 2优于3?在Python 3中进行了许多语言改进,甚至IDLE也得到了改进。 升级的一个主要原因是unladen-swallow is coming to python 3,这将大大提高性能。
答案 3 :(得分:6)
现在回归持有Python 3.x的主要原因是缺少第三方库。一旦SciPy被移植,我就会转换我的代码。
答案 4 :(得分:0)
更多迭代器(如dict.keys()
之类的东西)将成为Web应用程序的重要推动力。
核心团队将为新版本投入更多精力。新书可能会关注python 3(参见Dive into Python),但真正的工作仍在python 2中完成。
迟早,大型图书馆(numpy,wx,django)将被移植。直到那些三巨头切换,我看不到很多人使用python 3.但那些端口并非不可能。
一旦大型图书馆被移植,社区将面临真正的选择。那时它将开始流行起来。