前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >半年后,再谈 Python3.10

半年后,再谈 Python3.10

作者头像
哒呵呵
发布2022-04-14 09:09:43
6290
发布2022-04-14 09:09:43
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

2021 年 10 月 4 号,Python 官方正式发布了 Python3.10.0(https://www.python.org/downloads/release/python-3100/)。当时在忙着大数据相关的工作就没有写文章聊聊这个版本。就以这篇文章来简单聊聊。

与我预想的不一样,这一次 Python 没有发布 4.0,而是 3.10 这个版本号,这也意味着 3.10 版本不会有太大的改动,更多的是在原先版本上做新特性的增加或者是 bug 修复。至于为什么没有 Python4.0 ,在 InfoQ 的这篇文章《Python 之父:Python 4.0 可能不会有了》给出了解释:

Python 4,在这个问题上,无论是什么时候,只要核心开发团队一提到它,基本只是当做一个玩笑…… 我们已经从 Python 3 和 Python 2 中学到很多东西,因此,在严肃的意义上,谈论 Python 4 几乎是一个禁忌。

从 Python2 到 Python3 是一个非常痛苦的转变,虽然基本思想和语法特性没有发生太大的变化,但是在很多的细节上发生了太多的改变,比如print语法,还有一些日常经常的用法也发生了微妙的变化。编程语言作为一个软件架构的底层,决定了编程语言是不能经常发生变化的,编程语言的版本号的变化都可能直接影响到上层应用的稳定性。因此,即使是 Python2 进入了“死亡”状态,像很多公司的底层操作系统的默认语言依然是 Python2。除此之外,还有好多基于 Python2 的框架和组件,也要兼容新的版本 Python3。

可能 Python2 到 Python3 的过程让 Python 团队对于 Python4.0 的发布有了很大的犹豫和分歧。所以这一次的 Python 发布的版本号就是 3.10 了。

也许 Python4 的发布要等到 Python 团队成功解决沉疴已久的 GIL 问题了。

我可以想象到,在某个时候,我们被迫放弃某些二进制或 API 与 C 扩展的兼容性…… 如果不改变语言本身,C 扩展就会有明显的不兼容性;如果我们能摆脱 GIL(global interpreter lock,全局解释器锁);如果其中一种或两种出现,我们可能会被迫调用 4.0,因为 C 扩展层面的兼容性问题。

回到 Python3.10,相比于 Python 的新版本发布时间的不稳定性,自从 Python 3.8 开始,Python 就保持着每年一个新的版本发布速度了。不过这几个版本对于语法特性没有太大的改动,更多的是关注于性能,还有就是“可选的静态类型”,这也符合Python团队之前的预告。

  • Python 之父 van Rossum 披露了“Shannon Plan”项目,承诺 4 年把 Python 速度提升 5 倍。并且在 Python 3.11 版本,实现 Python 速度提高 2 倍的目标。--《Python 之父:让 Python 速度快 2 倍》
  • 你可能已经注意到,在过去的六、七年中,我们一直在向 Python 添加可选的静态类型,也被称为渐进类型。--《Python 之父:Python 4.0 可能不会有了》

Python3.10 发布的新特性中,与语法有关的可能是类似于 Scala 语言里的“模式匹配”。我个人是很喜欢 Scala 里的模式匹配,非常简洁有力,在 Python 要实现相关的逻辑需要不断的写 ifelif 语句。现在有了matchcase,这块就灵活和漂亮多了。比如:

代码语言:javascript
复制
command = input()
match command.split():
    case ["quit"]:
        quit()
    case ["load", filename]:
        load_from(filename)
    case ["save", filename]:
        save_to(filename)
    case _:
        print (f"Command '{command}' not understood")

我觉得是符合 Python 之禅里的“简单胜过复杂,明确优于隐晦”。

除了这个特性外,Python3.10 就没有太大的可提的东西了,更多的都类似于“新的 Union Type 表达”、“带括号的上下文管理器”,锦上添花,不影响现有的功能。

按照我们团队目前的生产环境和紧迫性,我是不会选择将现有的 Python3.7 的版本升级为 Python3.10 的。毕竟升级并没有带来太大的改变,甚至会引入不稳定性。

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

本文分享自 鸿的笔记 微信公众号,前往查看

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

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

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