… python 2最重要的一个优势在于拥有众多的第三方库,可以用来做任何事情,但是python 3没有这个优势。诚然,有很多的库已经移植到python 3了,但是有更多的库没有移植,也不容易移植。例如,你需要解析 x,但是x不像yaml和json那样容易解析。很可能有一个第三方的解析器可供选择,但是只可以用python 2,而没有针对python 3的移植版本。此外,加之python 2中的字节字符串(str)和python 3 中的字节字符串(bytes)之间有着功能上的差异,使得这更难移植。而事实上,移植它非常困难,并且需要很多的小技巧(trick)来兼容python 2和python 3。所以,你有两种选择,要么使用python 2 (已经不建议使用的语言)快速的开发你的程序,但这会花费你十倍以上的时间去移植相关的库(以及所有的依赖)。要么,使用另一门同样拥有很多库的编程语言,但是不用再困扰于python 2 / 3之间的问题。第二种选择显然不受欢迎,因为如果我们这样做了,在我们的生产环境中已经有很多python 3的程序了并且大部分python 2的库需要被移植。不管这些情况是否存在,人们要么继续使用python 2开发程序,要么选择另一门不会打自己脸的语言…文章链接:python 3 正在毁灭 python回复内容:
谢邀。先总结一下该文观点python 2.x的优势在于拥有众多的第三方库,虽然有很多库已经移植到python 3.x,但也有很多没有移植,而且有很多库很难移植。已有的python 2.x项目可以无缝移植到python 2.x的新版本上,而移植到python 3.x上将更难,需要花费更多的人力物力。大多数比较受欢迎并且支持兼容python 2和python3的库是通过运行在各自平台上的语言子集(subset)来写的。最好的办法是fork 2.7制作2.8,但官方却不支持这种做法。该文作者说得很有道理,但我觉得python 3.x并不会毁灭python,会令python社区变得更好。第三方库现在越来越多库已经转向兼容python 3.x,看pypi上的列表https://pypi.python.org/pypi?:action=browse&c=533&show=all。是有些库使用了所谓语言子集来实现兼容python 2 & 3,或者是使用six这个module来帮助处理跨py2和py3的兼容问题,这些有可能会影响效率,但是,对于整个程序而言,相信核心模块的算法优化带来的性能提升会远大于这些损失。而且有2to3.py这个脚本可以帮助转换生成py3 only的脚本来发布,完全可以做到自动化。如果是现有的项目,相信很多都还处理py 2.4-2.6的阶段吧,相信连py 2.7都不会到,何况更新的库。这些老旧代码,相信有一些库的升级版也不一定能支持到