热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么Python2更新到Python3这么慢

这篇文章主要介绍为什么Python2更新到Python3这么慢,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!作为目前最为流行的编程

这篇文章主要介绍为什么Python2更新到Python3这么慢,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

作为目前最为流行的编程语言,Python 的出现让计算机编程不再是生僻的专业技能,而是常人都能学习和使用的万金油,它也是人工智能领域里最为常用的语言之一。不过在三个月内,Python 或许要经历史上最大的一次变化。

为什么Python2更新到Python3这么慢

昨天,Python 官方网站的一纸声明《Python 2 的落幕》引发了人们的广泛讨论:该开发社区表示,官方对于 Python 2 的支持将会在 2020 年 1 月 1 日结束,在这之后即使是出现安全问题,旧版本的语言也不会得到任何改进。人们现在必须立即转移到 3.0 以上版本了。

目前,仍有一些开发者以志愿者的身份维护 Python2 语言。不过他们已共同决定,2020 年 1 月 1 日将是 Python2「生命终结」的那一天。该日之后,所有 Python2 相关的维护都将终止。

为什么 Python2 更新到 Python3 这么慢

不太了解编程的读者可能会有个疑问:总是提 Python3 比 Python2 好太多,为什么还是有人不更新呢?

机器之心认为可能主要有以下几个原因:

1. 工程稳定性相比软件的更新速度更为重要。

编程语言是构成软件的基石,编程语言如果发生了更新换代,软件的更新不是一件小事,需要全面地对所有代码进行更新。在这一过程中,如果出现新旧版本不兼容、代码稳定性变差等情况,可能会影响到用户的持续使用。因此,对于一些版本迭代,很多软件开发者选择不更新。宁可保证用户使用的稳定性,也不能急于更新到最新版本。

2. Python 官方「允许」Python2 持续存在。

Python 官方在文档中也提到,大版本的更新有可能会「伤害」开发者。具体而言,如果在 2006 年就迅速要求开发者放弃 Python2,则很多开发者可能因为开发成本问题,直接放弃 Python。繁荣的开发者社区是维持 Python 编程语言地位的重要条件,因此官方一直在更新维护 Python2,让更多的开发者留存在社区中。

3. Python2 确实也好用。

虽然相比 Python3,Python2 存在很多大的问题,但是 Python2 依然也是一个开发者友好的 Python 版本,在 Python2 时期就有很多开源库支持了。因此,一些开发者希望继续使用 Python2。

这些原因下来,Python3 取代 Python2 的进程就拖了十来年。不过,随着机器学习的发展,机器学习领域对编程语言的性能有很高的要求,且大部分新的工具都支持 Python3。因此,使用性能更好,有更多工具支持的 Python3 成为了开发者的必然选择。

放弃支持 Python2 的软件列表

2017 年,机器之心曾报道过将会放弃 Python2 的开源工具。目前,这一列表又长了很多。

为什么Python2更新到Python3这么慢

TensorFlow、Scikit-learn、Pandas、XGBoost 等工具已经准备放弃 Python2。

为什么Python2更新到Python3这么慢

同时停止支持的还包括 Numpy、Matplotlib、Jupyter Notebook 等。

为什么Python2更新到Python3这么慢

还有很多如 Cython、IPython 在内的工具。

为什么Python2更新到Python3这么慢

为什么Python2更新到Python3这么慢

以上为已经放弃 Python2 的开源工具列表(不完全统计)。从这个列表可以看到,Python 的生态系统是多么庞大。

下表显示了多个项目确定停止支持 Python 2 的时间。从该表中可以得知每个项目的某个版本是否支持 Python 2、发布时间线以及扩展支持的时间。(Python 自己的时间线:https://docs.python.org/devguide/#status-of-python-branches)

为什么Python2更新到Python3这么慢

官方答疑

官方同时提供了一些相关的答疑,机器之心整理如下:

为什么要终止 Python2?

答:终止 Python2 是因为我们要更好地帮助开发者。

Python2 是 2000 年发布的。一些年之后,我们意识到需要对 Python 进行一次大的更新升级。因此在 2006 年,我们开始了 Python3 的开发工作。因为很多人在当时没有更新,而我们也不希望这次更新给他们造成损害,因此多年来我们一直在维护并公开新的 Python2 和 Python3 版本。

但是这样一来,维护 Python 的工作变得非常困难。Python2 中有一些改进和维护是很难进行下去的。这会挤占我们提升 Python3 速度和性能的精力。

而且,如果还有很多人继续使用 Python2,那些用 Python 开发程序的开源工作者工作起来会更困难。他们不能使用 Python3 中的新特性让开源工具变得更好用。

我们不想伤害使用 Python2 的开发者,因此在 2008 年,我们宣布 Python2 将在 2015 年终止,并希望大家能够更新。当时,一些人更新了,但是还有一些人留在了 Python2 上,因此我们将终止时间推后到了 2020 年。

目前 Python2 还有多久的寿命?

答:从 2019 年 9 月 10 日起算还有 3 个月 21 天。有一个倒计时,在 pythonclock.org (https://pythonclock.org/) 网站上。

为什么Python2更新到Python3这么慢

机器之心在发稿时对倒计时网站的截图。

如果没有升级,会怎么样?

答:在终止日期到来后,即使用户发现了 Python2 上的灾难性安全问题,或者在 Python2 开发的软件中发现了这些问题,志愿者也不会帮助修复。如果用户需要 Python2 相关的软件协助,志愿者也不会提供帮助,并且越来越少的志愿者能够帮助到这些用户。同时,用户可能会失去使用优秀开源工具的机会,因为他们都是基于 Python3 开发的。同时,使用 Python2 的用户可能会拖慢其他使用 Python3 进行开发的人员的工作进度。

如何将 Python2 代码转为 Python3?

答:请参阅官方提供的指南。

指南地址:https://docs.python.org/3/howto/pyporting.html

如果用户基于 Python2 开发了一些软件,应该怎么做?

答:如果是从供应商那里购买的软件或软件支持,则详情可咨询他们;如果是从开发者或系统管理员那里付款获得的软件,则咨询这些开发者或管理员。如果二者均不是,则点击「Can I Use Python3?」页面查找升级到 Python3 所需要的工具。

caniusepython3 页面地址:https://pypi.org/project/caniusepython3/

是否有人员可以提供用户帮助?

答:是的。如果你付钱购买扩展支持,则与供应商联系。如果你可以付钱聘请一些人来帮助你,则可以在求职面板上发帖或直接聘请咨询人员。如果你需要志愿者提供免费帮助,则可以查看以下帮助页:https://www.python.org/about/help/。

用户直到现在才听说 Python2 升级事宜。在哪里宣布的升级通知?

答:我们在软件会议、Python 通知邮件列表、Python 官方博客、相关参考书和技术文章、社交媒体以及与出售 Python 支持的公司都讨论过 Python2 的升级事宜。

用户怎样才能确保下次及时收到升级通知呢?

答:从供应商那里购买 Python 支持,或者订阅 Python 通知邮件列表。

订阅地址:https://mail.python.org/mailman3/lists/python-announce-list.python.org/

从答疑来看,Python2 会被彻底抛弃。即使出现零日漏洞也不会有安全更新了,用户要抓紧升级,以免出现安全问题而得不到技术支持。

转移需尽早

目前,得到良好维护的开源项目大多已经转移到 Python 3 上了。你能找到的 Python2 项目源码,基本都是比较早期不再维护的项目,或是一些系统级项目(因为 Linux 和 MacOS 都自带 Python2.7)。根据 JetBrains 最新的 Python 开发者调查,大约 80% 开发者已在使用 3.5+ 版本。要知道在两年前,使用 Python 3 的比例还只有三分之一。

Python 早已经提供了 2 to 3 自动化工具,仅需一行命令就可以将 Python 2 代码转成 3。在 HackerNews 上,很多人对于 Python 2 支持的结束展开了讨论。

有网友表示:「Python 2 到 3(至少是 3.3 版本以上)是我做过最容易的过渡之一。我们可以通过库(Six)的帮助来完成转移,在几乎所有的情况下你都可以编写 2 到 3 版本兼容的代码,这意味着转移可以以每次一小部分的形式进行。至于依赖项,开发者们也已帮助升级了很多第三方模块。」

以上是为什么Python2更新到Python3这么慢的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程笔记行业资讯频道!


推荐阅读
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
author-avatar
手机用户2502931101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有