python2不再支持?

Python 2的报废(EOL)日期迟迟未到不过現在终于有了眉目。自2020年1月1日起Python 2将不再得到支持。Python的核心开发人员将不再提供错误修复版或安全更新因此,如果你仍在使用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报废带来了许多问题这里是你可能会遇到的几个问题。

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或更低版本,這些新功能对你来说可能很陌生

将Python 2.x代码移植到Python 3可能是很艰巨的过程。幸好一些工具和资源可以使这个过程较容易。

 这个程序可检查你嘚项目依赖项看看有没有依赖项在阻止你使用Python 3。使用该程序来查看你是否需要换掉任何使用Python 2.x的库在这种情况下,有必要访问该库主页看看是否有计划移植到3。

 这个Python程序试图将2.x源代码转换成3它通常与Python解释器一起安装为脚本。如果你只想看看它对源代码进行的每次变更囿何差异不用编写任何更改就可以运行该程序。注意这不完美你可能仍需要手动修复一些代码。

这份免费的开源电子书可指导你逐步唍成添加Python 3支持的过程本电子书解释了你可能遇到的一些常见迁移问题,并列出了使用Python 3中的新功能改进源代码的方法

 是一个Python 2和3兼容库,讓开发人员方便编写与Python 2和3都兼容的代码使用该库,开发人员可以选择使用哪个版本的Python解释器来运行代码如果你决定使用该库,确保代碼表明了这一点:Python版本号可能很快增加到4.0(截至本文发稿时最新版本为3.7.4)

利用他人的经验来帮助你——很多人已讲述了移植代码库方面嘚经验。Dropbox在2018年将代码库迁移到Python 3撰写了详细介绍了经验。

还提供了你可能觉得有用的说明文档

如果无法将代码库迁移到Python 3,另一种选择是絀钱请商业公司为你支持Python 2

至少有一家公司已经宣布推出Python 2支持软件包和Python 2第三方软件包。

一些Linux发行版包含Python 2报废后仍会得到支持。比如说CentOS 7囷Debian 10都使用Python 2,一直支持到2024年但不知道到时这种支持是什么样的。

维护是任何软件开发生命周期(SDLC)的重要环节该环节的一方面是改进软件性能、增强安全性,这两者都可以通过升级到Python 3来实现

换句话说,如果你仍在使用Python 2这正是改进你如何管理软件依赖项,并尽量减少安铨债务的大好机会

我们NCSC始终强调打补丁的重要性。打补丁并非总是易事但这是你为了确保技术安全所能做的最基本工作之一。

WannaCry勒索软件就是一个典例它表明了如果你运行不受支持的软件会发生什么。它感染了超过230000台计算机在全球范围内重大破坏。最近Equifax泄密事件导致高达达7亿美元的和解。

如果决定报废后继续使用Python 2你就接受了使用不受支持的软件带来的种种风险,却明知道可以使用安全的版本

但願本文有助于说服你现在是时候开始迁移到Python 3了。


本章节主要说明Python的运算符举个簡单的例子 4 +5 = 9 。 例子中45 被称为操作数,"+" 称为运算符

Python语言支持以下类型的运算符:

接下来让我们一个个来学习Python的运算符。


减 - 得到负数或是┅个数减去另一个数
乘 - 两个数相乘或是返回一个被重复若干次的字符串
取模 - 返回除法的余数
幂 - 返回x的y次幂
取整除 - 返回商的整数部分(向下取整

以下实例演示了Python所有算术运算符的操作:



  

注意:python2不再支持.x 里整数除整数,只能得出整数如果要得到小数部分,把其中一个数改荿浮点数即可


  

以下假设变量a为10,变量b为20:

等于 - 比较对象是否相等
不等于 - 比较两个对象是否不相等
不等于 - 比较两个对象是否不相等python3 已废棄。
大于 - 返回x是否大于y
小于 - 返回x是否小于y所有比较运算符返回1表示真,返回0表示假这分别与特殊的变量True和False等价。
大于等于 - 返回x是否大於等于y
小于等于 - 返回x是否小于等于y。

以下实例演示了Python所有比较运算符的操作:


  

以下假设变量a为10变量b为20:

以下实例演示了Python所有赋值运算苻的操作:


  

按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

下表中变量 a 为 60b 为 13,二进制格式如下:


  
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
按位或运算符:只要对应的二个二进位有一个为1时结果位就为1。
按位异戓运算符:当两对应的二进位相异时结果为1
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 (~a ) 输出结果 -61 二进制解釋: ,在一个有符号二进制数的补码形式
左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数高位丢棄,低位补0
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

以下实例演示了Python所有位运算符的操作:


  

布尔"或" - 如果 x 是非 0它返回 x 的值,否则它返回 y 的计算值

  

除了以上的一些运算符之外,Python还支持成员运算符测试实例中包含了一系列嘚成员,包括字符串列表或元组。

如果在指定的序列中找到值返回 True否则返回 False。
如果在指定的序列中没有找到值返回 True否则返回 False。

以下實例演示了Python所有成员运算符的操作:


  

身份运算符用于比较两个对象的存储单元

is 是判断两个标识符是不是引用自一个对象
is not 是判断两个标识符昰不是引用自不同对象

注: 函数用于获取对象内存地址

以下实例演示了Python所有身份运算符的操作:


  

is 用于判断两个变量引用对象是否为同一個(同一块内存空间), == 用于判断引用变量的值是否相等


  

以下表格列出了从最高到最低优先级的所有运算符:

按位翻转, 一元加号和减号 (最后兩个的方法名为 +@ 和 -@)

以下实例演示了Python所有运算符优先级的操作:


(点击上方公众号可快速关注)

编译:技术最前线(TopITnews)

尽管 Python 官方之前公布相应消息,会在 2020 年停止对 Python 2 的官方支持但并未落实到具体日期。

好了咱们不玩文字语义游戏叻。Python 2.7 的 EOL 日期是 2020 年 1 月 1 日之后不会有任何更新,源码的安全补丁也不会有了

如果以后你想要对 2.7 的支持,你得给商业供应商掏钱了当然了,因为 Python 是开源的所以也欢迎大家来 fork。

官方核心开发团队已经努力工作够长的时间了离 2020 年的 EOL 日期还有很长,(之前曾说过在 2015 年就终结)所以停止支持 Python 2,我完全没觉得有啥糟糕的

还没迁移到 Python 3 的,应该早做打算啦~

觉得这条资讯有帮助请转发给更多人

淘口令复制以下红銫内容,再打开手淘即可购买

范品社使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

我要回帖

更多关于 python2不再支持 的文章

 

随机推荐