Python 2.x 即将终止支持 是时候和它讲再见了

因此,如果你仍在使用Python 2.x,是时候将代码移植到Python 3了。如果你继续使用未得到支持的模块,可能危及贵企业及数据的安全性,因为无人修复的漏洞迟早会出现。

问题的严重性

下面这张表列出了十个流行的Python软件包及统计数据,来自Python社区开发和共享的软件的存储中心Python Package Index。

表中每个软件包每月下载量达数百万次。本文中的数据来自2019年6月。

正如你所见,大多数下载的软件包仍针对Python 2.x版本。在最好的情况下,Web应用程序框架Flask主要是针对3.x而下载的。但即使如此,仍有近三分之一的下载仍针对2.x.

即使这些下载中只有一部分用于实际项目,Python 2报废仍可能影响数百万系统的安全性。

Python 2消亡带来的问题

Python 2报废带来了许多问题,这里是你可能会遇到的几个问题。

依赖项

NumPy、Requests和TensorFlow等许多大受欢迎的项目承诺到2020年将停止支持2.x,一些项目已经这么做了。

这意味着如果你想使用青睐的模块的最新功能,需要使用Python 3。等待更新的时间越长,到时将更改的依赖项的Python 3版本会越多,更新起来会变得越困难。

你可能阻碍其他开发人员

如果你在维护其他开发人员依赖的库,可能会阻止他们更新到3。如果阻碍其他开发人员,你在间接、可能无意中加大其他项目面临的安全风险。

你也许不在贵公司外面发布任何代码,但要考虑可能也在内部使用你代码的同事。、

你错失最新功能

Python 3有许多你错失的新功能,包括如下:

来自表达式的好处——允许生成器将其操作的一部分委托给另一个生成器。

统一编码字符串——统一编码处理起来更容易。

打印函数——打印函数有额外的功能,因而使其更灵活。

视图和迭代器取代列表——一些众所周知的API不再返回列表。比如说,字典返回键的视图、值的视图或两者的视图。

“multi-with”语句——复杂的with语句更易于阅读。

使用*和**解包——扩大了*可迭代解包运算符和**字典解包运算符的用途。现在可以在函数调用中使用任意数量的解包运算符。

纯关键字实参——允许实参出现在可变长度(varargs)实参的后面。

F字符串——运行时评估的一种新类型的字符串常量,可能含有任何有效的Python表达式。

大量的加速和优化机制。

Python 3.0发布时,一些新功能向后移植到Python 2.7,可能很熟悉。如果你一直坚持使用2.6或更低版本,这些新功能对你来说可能很陌生。



您可能还会对下面的文章感兴趣: