前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 2.x:尽管风靡一时 但现在它要落幕了

Python 2.x:尽管风靡一时 但现在它要落幕了

作者头像
python学习教程
发布2019-09-10 17:40:54
4970
发布2019-09-10 17:40:54
举报
文章被收录于专栏:python学习教程

前言

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!

距离 Python 2.7 退休还有 4 个月 1 天 3 小时,在 Pythonclock 网站上,倒计时的数字在动态变化着。近日,英国国家网络安全中心 (NCSC) 建议开发者放弃使用 Python 2 。随着 Python 2 生命周期截止日(2020 年 1 月 1 日)的迫近,英国国家网络安全中心 (NCSC) 担心继续使用不受支持的模块存在数据安全的风险,因为 Python 核心开发人员即将不再提供该版本的安全更新。尽管用户仍可选择向第三方付费继续使用 Python 2 ,但目前已有许多项目停止了对 Python 2 的支持(包括 TensorFlow、Requests、scikit-learn、Apache Spark、pandas 等等)。所以,Python 2.x 的用户们,是时候将目光转向 Python 3 了。

自 2008 年发布以来,Python 2.0 已经走过了十多个年头。它的最后一次重大更新 Python 2.7 是在 2010 年。Python 2.x 是一个优异的语言版本,但与此同时也带来了相当大的历史包袱。lexy munroe 在博客中悉数列举了它的缺陷,“ 例如,它有两种整数类型;存在恼人的 Unicode 编码问题;它混淆了懒惰和渴望的功能工具;它有一个标准的库,但加载内存非常庞大;它自诩的强类型,却有偶尔令人啼笑皆非的运算结果 None < 3 < “2”。总的来说,它的一些“阴暗角落“,包含了 Python 1 时代太多的历史包袱。“

由于修复这些问题可能会破坏现有代码,而几乎所有为 2.0 编写的代码仍可在 2.7 上运行。因此,一个不太兼容的新版本 Python 3 应运而生。设计之初,Python 3 的预期是用户会直接转移到新版本,从而放弃使用 Python 2 。而实际上,大多数的库希望同时在 Python 2 和 Python 3 上运行,这在一开始很难运作。众多周知,Python 社区对变革的抵抗力总是很强。Python 3.0 在 2008 年 12 月发布后,花了整整四年时间,直到 2013 年 1 月,它的月下载量才超过 Python 2 。

意识到许多用户仍在使用 Python 2 ,Python 的开发人员已经将对 Python 2.7 的支持从 2015 年延长到了 2020 年。由于开发人员仅修复错误,并把所有新功能仅限在 Python 3 上使用,许多项目已经减少了对 Python 2.7 的支持。

现在, PyPI 的大部分流行软件包都可以在 Python 2 和 3 上运行,而且每天都会添加新的软件包。此外,许多关键的 Python 项目已承诺将尽快停止对 Python 2 的支持。

Python 各分支的状态

根据 JetBrains Python 开发者调查,绝大多数用户(84%)已经改用 Python 3 。其中, 54% 使用 Python 3.6 , 30% 使用 Python 3.7 。

看起来,结论似乎显而易见,你应该开始使用 Python 3 了 ,因为它才是 Python 的未来!

然而,事实上,对 Python 版本的选择取决于公司的实际应用情况。目前仍有不少银行和金融公司使用 Python 2.7 。去年,当 Python 宣布 Python 2 将于 2020 年正式结束时, Hacker News 用户就曾表示业内数百万人仍在使用 Python 2.7 。

让我们再看一组最新数据,根据 Python Package Index 的调查结果,在十大流行 Python 包中,前四个软件包的 Python 2 下载量比 Python 3 还要大,甚至 Python 3 更受欢迎的大部分软件包仍适用于 Python 2 。

本月早些时候, PyPy 表示,只要 PyPy 存在,他们就不打算放弃对 Python 2.7 的支持。外媒 Packt Hub 解读,这种对 Python 2 的偏爱不仅仅是因为 PyPy 的第一个版本是 Python 2 实现, Python 3 最近才进入这一版本,这也是 PyPy 生态系统的关键部分, RPython 是一个动态语言实现框架,它的基础就是 Python 2 。

因此,Python 2 的离场也会带来一些问题。英国国家网络安全中心 (NCSC) 研究员 Rich M 在官方博客中总结出以下几点:

1. 依赖项

正如前文所说,像 Numpy , TensorFlow 这样的流行项目已经承诺 2020 年停止支持 Python 2.x 。这意味着如果你想使用你喜欢的模块的最新功能,就必须使用 Python 3 。等待更新的时间越长,更改的依赖项的 Python 3 版本就会越多,更新就会更困难。

2. 可能阻碍其他开发人员

如果你维护其他开发人员所依赖的库,则可能会阻碍其更新到 Python 3。这意味着你在无形中增加其他开发人员的安全风险。你也许不在组织外部发布任何代码,但要考虑可能在内部使用你的代码的同事。

3. 错过新功能

Python 3 有许多 Python 2 用户没有尝试过的新功能,包括:

  • 表达式的好处:允许生成器将其部分操作委托给另一个生成器。
  • Unicode 字符串:Unicode 更易于处理。
  • 打印函数: 打印函数有额外的功能,能使其更加灵活。
  • 视图和迭代器而非列表:一些众所周知的 API 不再返回列表。例如,字典返回键、值的视图或二者的视图。
  • “multi-with“语句:复杂的“with”语句更容易阅读。
  • 使用 * 和 ** 解包:扩展使用 * 可迭代解包运算符和 ** 字典解包运算符。现在可以在函数调用中使用任意数量的解包运算符。
  • 纯关键字实参:允许实参在 varargs 实参后出现。
  • F 字符串:在运行时计算的一种新类型的字符串常量,可包含任何有效的 Python 表达式。
  • 大量的加速和优化

英国国家网络安全中心(NCSC)近日将现有应用程序中的安全风险和可能发生的代码破坏列为用户需要尽快弃用 Python 2 的主要原因。该机构警告说,那些不为迁移到 Python 2.x 投资的公司最终可能面临和 Equifax 或 WannaCry 同样的处境。“在知道有可用的安全版本的情况下,仍铤而走险,决定在生命周期结束后继续使用 Python 2 ,您将需要承担使用不受支持的软件带来的所有风险。”

为了方便用户过渡, Python 团队也提供了各种信息丰富的指南。(例如: Porting Python 2 Code to Python 3 ; Should I use Python 2 or Python 3 for my development activity? )但无论如何, Python 2.x 仍有一群忠实粉丝。现在,是他们该做出选择的时刻了。

ps:想学习python的朋友这里推荐一下我建的python零基础系统学习交流扣扣qun:322795889,群里有免费的视频教程,开发工具、电子书籍分享。专业的老师答疑!学习python web、python爬虫、数据分析、人工智能等技术有不懂的可以加入一起交流学习,一起进步!

好啦!文章就给看官们分享到这儿

最后,如果觉得有帮助,记得关注、转发、收藏哟

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档