0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python 2.x 淘汰乃大势所趋

WpOh_rgznai100 来源:lq 2019-09-07 07:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在技术的长河中,软件、工具、系统等版本的迭代本是常事,但由于使用习惯、版本的兼容性、易用性等因素,很多用户及开发者在使用或做开发的过程中,并不愿意及时同步更新,而这无疑为 IT 技术圈带来了诸多碎片化问题,正如系统之 Android、Windows,也正如编程语言之 Python。近日,Python 因为其版本的碎片化问题遭到了英国国家网络安全中心(NCSC)的点名,NCSC 警告开发者们必须考虑将 Python 2.x 的代码库移植到 Python 3.x 版本上,主要是因为自 2020 年 1 月 1 日起,Python 2.x 将走到其生命的尽头,不再得到支持(EOL,End-of-life)。与此同时,NCSC 还将继续使用 Python 2.x 的公司比作 EOL 以引诱另一个 WannaCry(病毒)或 Equifax(信息泄露)事件的发生。

Python 的应用现状

回望近些年才被 AI 点燃的 Python,其实并非是一门新的语言,它最早于 1989 年底由知名的荷兰计算机程序员 Guido van Rossum 发明,后来作为一门面向对象、直译式计算机程序设计语言于 1991 年面世。其 30 年的发展历程可谓比编程语言界的常青藤 Java 更为久远。而论及 Java,一年两次迭代的速度早已让不少开发者痛苦不堪,其纷纷开启对 Oracle 的吐槽模式,并直言“马上推出 JDK 13 的你只管更新,不用顾及我们的感受,总之我们还坚守在 JDK 1.x”。事实上,不止 Java,Python 也有着相同的问题,很多人对 Python 旧版本的坚持反而也让该语言的核心开发者们也备受煎熬,因为旧版本在安全性、功能上均无法与新版本相媲美,容易出现很多 Bug。根据著名 IDE 开发商 JetBrains 和 Python 基金会于今年年初发布的《Python Developers Survey 2018 Results》报告显示,Python 3 的采用率正在快速增长,将其作为主要解释器的开发者比例从 2017 年的 75% 上升到了 84%,不过与此同时,Python 2 仍占有 16% 的份额。

其中,在 Python 2.x 版本中,Python 2.7 最受欢迎且使用的人数最多,占比 93%。

那么这些开发者究竟为何不愿意升级?

Python 的版本之过

一直以来,语法简单、拥有丰富和强大类库的 Python 被称之为一门胶水语言,它能够很轻松的把用其它语言制作的各种模块(尤其是 C/C++)轻松地联结在一起。不过在版本的迭代过程中,Python 出现了一个经常被开发者们诟病的问题,即于 2008 年发布的 Python 3 在设计时没有考虑向较早版本相容的问题,Python 2.x 版本与 Python 3.x 之间并不兼容。这意味着如果你的软件是基于 Python 2 开发的,想要迁移到 Python 3 上面,无疑需要耗费巨大的成本。而且在此过程中,如果项目涉及到诸多关于 Python 2 的类库,可能还会导致迁移失败。而自此问题的出现让不少原本想要升级的开发者宁愿停留在以前的旧版本中,对此,有不少网友表示:

Python 2.x 和 Python 3.x 两者在编码效率上没有明显差距,但是 Python 3.x 却要花额外的成本处理兼容性问题;

感觉 Python 2 和 Python 3 是两门不同的语言,只不过他们的语法相似罢了;

。..。..

除此之外,根据来自 Python 社区开发和共享软件的存储中心 Python Package Index 统计显示,当前主流的 Python 软件包中仍然有不少使用的是 Python 2.x 版本。且其中,每个包每个月的下载量高达百万次。而想要将这些包移植到 Python 3 上,也绝非是一件易事。

Python 2.x 淘汰乃大势所趋

诚然开发者有多少个不愿意,但 Python 2.x 淘汰已成必然趋势。早在 2018 年 3 月,Python 之父 Guido van Rossum 就曾在邮件列表上宣布 Python 2.7 将于 2020 年 1 月 1 日终止支持,这意味着之后 Python 2 将不再被统一维护,与之对应的是主流第三方库也不会再提供针对 Python 2 版本的开发支持。不过,想要继续使用旧版本也并非不可,就如同 Java 一样,交付商业费用即可,但这样的做法在日新月异的技术圈中,显然不是长久之计。如今 NCSC 的警醒,再次告诫开发者们,“如果继续使用不受支持的模块,公司就会冒着组织和数据的安全性风险,因为漏洞迟早会出现,而且没人会修复。”与此同时,来自 NCSC 的平台安全研究员 Rich M 也于官方博客上列举了不升级 Python 2 将面临的种种问题:依赖项许多流行的项目,如 NumPy、Requests 和 TensorFlow 等承诺到 2020 年将停止支持 2.x,并且当前一些项目已经这么做了。这意味着如果你想使用你喜欢模块的最新功能,那么就需要使用 Python 3。等待更新的时间越长,到时将更改的依赖项的 Python 3 版本会越多,更新起来会变得越困难。或将阻碍其他开发者如果你正在维护其他开发者所依赖的库,则可能会阻止他们更新到 Python 3。如果阻碍其他开发者,你会在间接、可能无意中加大其他项目面临的安全风险。你也许不在公司外部发布任何代码,但要考虑可能也在内部使用你代码的同事。错失最新的 Python 功能

表达式的收益——允许生成器将其部分操作委托给另一个生成器。

Unicode 字符串——Unicode 处理起来更容易。

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

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

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

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

纯关键字实参——允许实参出现在 varargs 参数的后面。

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

大量的加速和优化机制。

Python 2.x 如何迁移到 Python 3.x?

如今 Python 已经被广泛应用于 Google、Facebook、Netflix 等实践的生产环境中,也横扫了各大编程语言排行榜,对此,更有人预估,其可能在未来几年内超越 C 和 Java,成为无可争议的编程语言领导者。那么对于普通的开发者而言,又该如何丢弃 Python 2.x 版本,向 Python 3.x 版本移植?基于此,NCSC 给出了如下的一些程序、教程和书籍,希望对大家有所裨益:

Can I Use Python 3」(https://github.com/brettcannon/caniusepython3)是一个程序,它可以检查你项目的依赖项,看看有没有依赖项在阻止你使用 Python 3。使用该程序来查看你是否需要换掉任何使用 Python 2.x 的库。在这种情况下,有必要访问该库主页,看看是否有计划移植到 Python 3。

「2to3」(https://docs.python.org/2/library/2to3.html)是一个 Python 程序,它试图将 2.x 源代码转换成 Python 3。它通常与 Python 解释器一起安装为脚本。如果你只想看看它对源代码进行的每次变更有何差异,则可以在不用编写任何更改的情况下运行该程序。注意:这并不完美,你可能仍需要手动修复一些代码。

《支持Python 3:深入指南》(http://python3porting.com/)是一本免费的开源电子书,可指导你完成添加 Python 3 支持的过程。本书解释了你可能遇到的一些常见迁移问题,并列出了使用 Python 3中 的新功能改进源代码的方法。

「Six 」(https://github.com/benjaminp/six)是一个 Python 2 和 3 兼容库,为开发者提供了编写与 Python 2 和 3 都兼容的代码。使用该库,开发人员可以选择使用哪个版本的 Python 解释器来运行代码。如果你决定使用该库,确保代码表明了这一点:Python 版本号可能很快增加到 4.0(截至本文发稿时最新版本为 3.7.4)。

利用他人的经验来帮助你——很多人已讲述了移植代码库方面的经验。Dropbox 在 2018 年将代码库迁移到 Python 3,撰写了一篇博文详细介绍了经验(https://blogs.dropbox.com/tech/2018/09/how-we-rolled-out-one-of-the-largest-python-3-migrations-ever/)。

Python 官网(https://docs.python.org/3/howto/pyporting.html)。

基于此,你会放弃 Python 2.x 吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    10

    文章

    1960

    浏览量

    38988
  • python
    +关注

    关注

    57

    文章

    4859

    浏览量

    89633

原文标题:再见,Python 2.x

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    没有专利的opencv-python 版本

    简单,无兼容性报错。 验证:安装后执行 import cv2; print(cv2.__version__),输出 4.8.x 或更高版本即成功。 二、需扩展功能(无专利):选择「不含
    发表于 12-13 12:37

    Momenta创新成果获得央视重点关注

    目前,中国智能网联汽车产业已经在产业链多个环节和多个领域实现技术创新。国家将持续鼓励支持中外企业在这一领域深化合作,推动中国经验融入全球发展进程。未来,创新成果分享全球已成为大势所趋
    的头像 发表于 10-23 09:49 418次阅读

    eSlM版iPhoneAir即将发售!智能终端的“无卡化” 浪潮已形成!eSIM已经是大势所趋

    在苹果引入eSIM手机商用后,华为、OPPO等手机厂商迅速宣布跟进,那么PDA手持终端会引入eSIM吗?手机之后是PDA?eSIM技术在手持终端的渗透与国内厂商布局当苹果力推eSIM手机商用,华为、OPPO等厂商迅速跟进,这场"无卡化"浪潮自然引发了对PDA手持终端的关注——这类广泛应用于物流、零售、工业场景的设备,会不会成为eSIM的下一个战场?答案藏在政
    的头像 发表于 10-21 14:36 508次阅读
    eSlM版iPhoneAir即将发售!智能终端的“无卡化” 浪潮已形成!eSIM已经是<b class='flag-5'>大势所趋</b>!

    施耐德电气如何助力生命科学与电子行业发展

    低碳转型的大势所趋下,先进制造业对于能源与运营效率的内生需求逐渐上升为行业发展的核心命题;与此同时,出海全球市场的战略方向也为企业带来了突破增长边界的全新可选项。
    的头像 发表于 09-25 16:12 405次阅读

    国产核心板:工控品质+自主生态,助力工业未来

    近年来,国家大力推进关键领域核心技术的自主可控,从“中国制造2025”到“新基建”战略,工业控制系统的国产化替代已成为大势所趋。尤其在能源、轨道交通、通信等关键行业,安全可靠的国产工控设备需求激增。
    的头像 发表于 07-14 14:23 273次阅读

    智慧供热-引领未来供热新趋势

    ,转变粗放的运营管理模式。 智慧供热是与我们国家倡导的绿色发展理念相一致的,是行业发展的大势所趋! 传统的热力管网的管理及运行情况的掌控,只能依靠人工手抄和人工巡视的方式,工作量大、实时性差、准确度低,不利于现场及
    的头像 发表于 06-03 14:11 529次阅读
    智慧供热-引领未来供热新趋势

    安科瑞AEV系列新能源汽车充电桩在地下车库、停车场的应用

    新能源汽车的产业发展与推广应用,已是大势所趋,新能源汽车已经成为未来汽车发展的必然方向。近年来,世界上主要汽车生产国都将发展新能源汽车作为了提高产业竞争能力、保持社会经济可持续发展的重大举措。当前,我国新能源汽车产业正加速发展,而充电桩建设缓慢滞后,已经严重制约新能源汽车的发展。
    的头像 发表于 03-26 10:11 707次阅读
    安科瑞AEV系列新能源汽车充电桩在地下车库、停车场的应用

    使用Python3.7导入cv2时遇到错误怎么解决?

    使用 Python* 版本 3.7。 Ran Classification Python* 演示。 在导入 cv2 时遇到错误: ImportError: DLL load failed: The specified modu
    发表于 03-05 09:37

    MEMS替代传统传感器是大势所趋吗?

    传感器技术作为信息获取的关键环节,正经历着前所未有的变革。其中,MEMS(微机电系统)传感器作为新兴技术的代表,正逐渐替代传统传感器,成为推动科技进步和产业升级的重要力量。本文将深入探讨MEMS传感器替代传统传感器的原因,揭示这一趋势背后的科技逻辑和市场动力。 传统传感器的局限与挑战 传统传感器,如温度传感器、压力传感器和光传感器等,主要基于物理和化学原理,通过物理或化学变化来实现感知并将感知信号转换为电信号输出
    的头像 发表于 02-20 10:25 666次阅读

    GPU渲染才是大势所趋?CPU渲染与GPU渲染的现状与未来

    在3D建模和渲染领域,随着技术的发展,CPU渲染和GPU渲染这两种方法逐渐呈现出各自独特的优势,并且在不同的应用场景中各有侧重。尽管当前我们处在一个CPU渲染和GPU渲染并行发展的时代,但随着硬件技术的不断进步,尤其是GPU性能的显著提升,越来越多的行业专家和从业者开始预测未来的渲染工作将逐步转向GPU渲染。然而,CPU渲染真的会被GPU渲染逐渐取代乃至消失
    的头像 发表于 02-06 11:04 1272次阅读
    GPU渲染才是<b class='flag-5'>大势所趋</b>?CPU渲染与GPU渲染的现状与未来

    十大钢结构企业的智能制造

    钢结构行业智能化转型升级为大势所趋
    的头像 发表于 01-23 13:37 1679次阅读

    AGV无人搬运机器人常用的几种安全配置

      agv 近年来,随着经济的快速发展,货运、仓储等物流环节呈快速增长趋势,其中仓储业的发展尤为迅速,安全高效的自动化仓储大势所趋,AGV智能车已经成为制造业必不可少的一种辅助工具。工厂内,安全
    的头像 发表于 01-21 18:03 1164次阅读
    AGV无人搬运机器人常用的几种安全配置

    联盛德微电子WM IoT SDK 2.X正式发布

    WM IoT SDK 2.X 是联盛德微电子(WinnerMicro)秉承开源和组件式架构的设计理念自研的新版IoT SDK,2025年1月15日正式发布。
    的头像 发表于 01-15 15:24 1346次阅读
    联盛德微电子WM IoT SDK <b class='flag-5'>2.X</b>正式发布

    Flexus 云服务器 XPython 安装的极致便捷之旅

    配置和环境设置方面,可能会遇到各种挑战。为了帮助开发者更高效地使用 Flexus 云服务器 X,本文将详细介绍如何在 Flexus 云服务器 X 上安装 Python,并突出其便捷性。 一
    的头像 发表于 01-07 17:00 558次阅读
    Flexus 云服务器 <b class='flag-5'>X</b>:<b class='flag-5'>Python</b> 安装的极致便捷之旅

    为什么讲MEMS替代传统传感器是大势所趋

      传感器技术作为信息获取的关键环节,正经历着前所未有的变革。其中,MEMS(微机电系统)传感器作为新兴技术的代表,正逐渐替代传统传感器,成为推动科技进步和产业升级的重要力量。本文将深入探讨MEMS传感器替代传统传感器的原因,揭示这一趋势背后的科技逻辑和市场动力。   传统传感器的局限与挑战 传统传感器,如温度传感器、压力传感器和光传感器等,主要基于物理和化学原理,通过物理或化学变化来实现感知并将感知信号转换为电信号
    的头像 发表于 12-18 10:06 1052次阅读