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

    文章

    1965

    浏览量

    39848
  • python
    +关注

    关注

    58

    文章

    4882

    浏览量

    90289

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    安信可PB-04 BLE 5.4模组在充电宝中的应用选型

    今年3月,GB 47372—2026《移动电源安全技术规范》正式发布,2027年4月起全面实施。充电宝向用户披露电池健康状态已是大势所趋
    的头像 发表于 04-14 17:04 820次阅读

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    摘要 VirtualLab Fusion允许Python外部访问其建模技术、求解器和结果。这个用例介绍了一种使用路径变量和Visual Studio代码将Python连接到VirtualLab
    发表于 03-31 09:39

    大势所趋!在江苏,打造零碳园区已非“选择题”而是“必答题”

    点击蓝字,关注我们 近年来,“双碳”战略持续推进,各地纷纷出台零碳园区建设相关规划与政策。江苏省作为经济与能源消费大省,积极响应国家号召,已将“零碳园区”列为能源转型与绿色发展的重要抓手,明确要求园区提升可再生能源比例、强化能碳管理能力、推动源网荷储一体化发展。在政策强力驱动下,园区零碳转型已成为企业可持续发展的必然选择。 为何要建零碳园区? 园区是我国产业集聚、能源消耗和碳排放的集中区域。据统计,截至
    的头像 发表于 02-02 15:55 179次阅读
    <b class='flag-5'>大势所趋</b>!在江苏,打造零碳园区已非“选择题”而是“必答题”

    没有专利的opencv-python 版本

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

    揭秘施耐德电气中压开关背后的黑科技

    当前,推进“双碳”目标和建设新型电力系统,已成为电力行业的大势所趋。在这一宏大背景下,中压开关如同守护电力系统安全的“隐形卫士”,默默承载着电路通断与故障隔离的核心使命。它的稳定与精准直接
    的头像 发表于 12-12 15:20 600次阅读

    Amphenol Aerospace 2M Micro Miniature Python:创新的低轮廓 EMI/RFI 插头与后壳组合

    Amphenol Aerospace 2M Micro Miniature Python:创新的低轮廓 EMI/RFI 插头与后壳组合 作为一名电子工程师,在设计过程中,我们总是在寻找能够优化空间
    的头像 发表于 12-12 09:15 387次阅读

    Termux中调试圣诞树Python代码

    python --version 如果输出Python 3.x.x(比如3.11.4),说明安装成功。 二、代码编写(两种方式可选) 方式1:用Termux自带编辑器(nano)(新手推荐) 创建并编辑
    发表于 12-09 09:02

    畅享连接,PROFINET嵌入式模块在称重仪表中的重点应用

    和称重都是保证质量和效率的关键。 随着新项目实施中工业以太网技术的普及,称重设备增加实时工业网络化协议接口是大势所趋。 客户选择的解决方案 传统的称重设备只是简单的接口协议,如Modbus RTU等。为了提升客户产品竞争力,稳联
    的头像 发表于 11-04 16:45 627次阅读
    畅享连接,PROFINET嵌入式模块在称重仪表中的重点应用

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

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

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

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

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

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

    瑞之辰电源管理芯片与传感器技术成就国产芯势力

    全球半导体产业格局正经历深度调整,国产芯片崛起已是大势所趋,一批中国芯企业正以硬核实力打破外资垄断壁垒,逐步缩小与国际先进水平的差距。作为其中的坚实力量,瑞之辰扎根电源管理芯片、聚焦传感器两大核心
    的头像 发表于 09-11 11:58 2607次阅读
    瑞之辰电源管理芯片与传感器技术成就国产芯势力

    termux调试python猜数字游戏

    保存并运行 - `Ctrl+O` → `Enter` 保存文件 - `Ctrl+X` 退出编辑器 - 运行命令: ```bash python guess_number.py ``` 2. 游戏
    发表于 08-29 17:15

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

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

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

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