Python 2已正式寿终正寝。Python编程语言团队刚宣布了Python 2的最后一个版本Python 2.7.18。展望未来,Python 2将不再收到更新、错误报告、修复版或更改。
Python软件基金会建议使用Python 2的那些人尽快切换到Python 3。Python 3引入了不向后兼容的新功能和改进功能。自2008年以来,版本3处于积极开发的状态。Python3的最新版是版本3.8.2,这是Python 3.8的第二个维护版本。团队目前正在开发Python 3.9,该版本的早期预览版从本月开始供开发人员使用。
想进一步了解Python 2和Python 3之间的变化以及如何成功迁移到Python 3,软件开发网站SD Times采访了ActiveState的产品副总裁Jeff Rouse。以下是对话的编辑版。
SD Times:Python 2寿终正寝对组织而言意味着什么?
Rouse:引入Python 3时,Guido van Rossum及核心团队认为需要对该语言进行重大更改,这意味着他们要摈弃向后兼容性,而你在设计一种语言时这是艰难的决定。从新技术的角度来看,一二十年前做出的设计决策可能站不住脚,于是最终推出Python 3后,社区和核心语言维护者在十年间的大部分时间用于劝说人们从Python 2迁移到Python 3,以便所有维护者以及支持这两个版本的Python社区中的每个人都可以最终完成。
Python 2.7走到尽头意味着,将不再有任何错误修正版、没有改进,可能最重要的是,没有针对该语言的安全更新。这包括大多数社区软件包。
组织迁移到Python 3要花多久?
实际上,它们应该已经在考虑这一点。造势已有相当长一段时间。最初的想法是2010年左右每个人(都会)开始迁移。2014年将是截止日期,后来延长到了2020年。
组织应该已经在考虑,如果它们刚接触Python 3,那很好。它们实际上可以利用所有可用的内容、应用程序和项目来帮助从Python 2迁移到Python3。你需要执行一系列步骤来评估从Python 2迁移到Python 3需要多大的工作量,每种情况有所不同。
Python 2.7的最后版本已发布,你认为组织是否感受到了最终要积极迁移的压力?
是的,我们在ActiveState上已看到了这一幕。我们同时支持Python 2和Python 3,有许多新客户过来说“嘿,我仍在使用Python2。你能帮助我们摆脱困境吗?”或“你能给我们多一点时间,直到我们准备好使用Python 3吗?”
对于拥有庞大代码库的组织而言,进行更改并非易事。即使从Python 2迁移到Python 3不用重写,这项工作也足够重要,你需要非常认真地梳理代码库,以便确保将所有内容迁移过去。然后,出于同样的道理,你拥有代码库依赖的所有这些相关软件包,因此你还要考虑到这一点。
可能会有一些升级难题,因此组织应立即规划做好这项工作。要认识到安全漏洞和缺陷确实会慢慢出现。
如果他们计划将来维护应用程序,又想充分利用任何新技术,享有明显得到维护的安全更新和错误修正版,他们确实要转向Python 3。
你会在Python 2和Python 3之间看到什么区别?
Python 3确实加强了语法。Python的核心理念之一是,做某事只有一种方法,并且做得很好。Python的一大优点是,它是一种非常易读的语言,使用起来非常简单,以至于语言设计人员其实认定应该继续对此进行改进。
比如说,只有一种方法可以做迭代器(iterator),没有多种方法可以设定范围。因此,我认为开发人员会从语法方面受益匪浅,这使事情变得更简单了一点。Python 3的性能继续提高。标准库有大量改进。它以极其强大的方式处理异步函数;总体上讲,它旨在继续推进这门语言。
由于迁移过程中有许多考虑因素,组织如何才能成功地迁移过去?
首先要做的是弄清楚应用程序和实用程序面临的风险状况。然后,你便知道要投入多少,早做而不是晚做有多重要。第一件事其实是从Python 2应用程序出色的测试覆盖入手,因为在你迁移到Python 3时这至关重要,你的测试将继续表明该功能并未受到任何破坏。
我个人的看法是,如果你未使用最新的Python 2.7,也许你在使用2.6或2.7的早期版,那么确保一切正常运行是最明智的。然后,你实际上可以运行源代码转换器……这为你提供了将Python 2转换成Python 3的结果。之后,它会指出需要你手动修复的任何方面。
在此过程中,就你使用的各种软件包而言,你会在代码中遇到依赖项。你可能需要迁移至同一软件包的不同版本。
你如何看待Python在将来继续使用,Python 3将扮演怎样的角色?
如今,Python 3显然是数据科学背后的引擎,而且在许多方面,数据科学已围绕Python融合在一起。
所有世界优秀的数据科学都用Python来完成。我认为这种情况不会很快发生变化。
我们谈论Python 2时,有相当多的数据科学工作也是用Python 2完成的,但是大多数主要软件包(比如TensorFlow等)在相当早的修订版中不再支持Python 2。因此,如果你其实不考虑搞真正的数据科学,可以用Python 2处理很多数据分析,但是要搞真正的数据科学和机器学习,你确实应该使用Python 3。
原文标题:Moving from Python 2 to Python 3
作者:Christina Cardoza
(文章来源:51CTO)