首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 登顶 TIOBE 结束多年霸榜,新版本发布带来多项功能更新

10 月 7 日,TIOBE 公布了 2021 年 10 月份编程语言榜单,历经几个月的排名角逐,Python 编程语言成功以 11.27% (领先 C 0.11% 的微弱优势)的评级登上榜一,结束了 Java 和 C 的多年霸榜时代,成为 20 多年来新的语言霸主。C 和 Java 分别以 11.16% 和 10.46% 的评级位列榜单第 2 和第 3 位。与此同时,几日前 Python 官方也发布了 Python 3.10.0 正式版本,带来多项功能更新与性能改进。

对此 TIOBE CEO Paul Jansen 称:“Python 作为一种简单的脚本语言开始是 Perl 的替代品,现在已经越来越趋于成熟,它的易用性、大量的库以及在各种领域的广泛使用,使其成为当今最流行的编程语言。”

强势登顶结束多年霸榜

从榜单中可以看出,Python 从去年的第 3 名,超越 C 和 Java 跃居第 1,C 和 Java 相比去年 10 月份,评级分别下降了 5.79%、2.11%。除 C 和 Java 有所降低外,前十其他语言均有不同程度的增长。其中 Assembly language 进步最大,从去年的 17 名来到今年的第 10 名。而去年第 9 的 R 语言,已被挤出前十。

TIOBE 10 月 编程语言指数 Top 10

近 20 年编程语言指数走势(2002-2020)

从下图的走势图中,可以清楚看到 2002 -2020 这近 20 年来编程语言的排名走势变化曲线。对应的数据或多或少显示了该语言的流程程度与变化。

TIOBE 指数定义

TIOBE 编程社区指数是衡量编程语言受欢迎程度的一个指标。该指数每月更新一次。评级的依据是世界范围内熟练的工程师数量、课程和第三方供应商的数量;流行的搜索引擎,比如谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度等都被用来计算评级。

TIOBE 指数可以让你检查自己的编程技能流行度如何,是否跟得上时代的步伐,当需要学习一个新的语言时,如何做出合适的选择。值得注意的是,TIOBE 指数与最佳编程语言或大多数代码行所使用的语言无关。关于 TIOBE 指数更详细的解释,可以在这里找到。

Python 3.10.0 正式版发布

正值国庆假期的 10 月 4 号,Python 官方正式发布了 Python 3.10.0,小编梳理了一下,挑选几个重要的更新功能呈现给大家。

更准确友好的错误提示

当解析包含有未关闭括号、引号的代码时解释器会报错提示更多信息并提供更准确的位置而不是只显示 SyntaxError: unexpected EOF while parsing 并指向某个不正确的位置。

以下面代码举例来说,(注意未关闭的 “ { ”)

代码语言:javascript
复制
expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,            38: 4, 39: 4, 45: 5, 46: 5, 47: 5, 48: 5, 49: 5, 54: 6,some_other_code = foo()

复制代码

之前版本的解释器会报告一个不太准确的语法错误位置,如下面代码所示:

代码语言:javascript
复制
File "example.py", line 3    some_other_code = foo()                    ^SyntaxError: invalid syntax

复制代码

Python 3.10.0 中则优化了此问题,给出了信息量更多更准确的错误提示:

代码语言:javascript
复制
File "example.py", line 1    expected = {9: 1, 18: 2, 19: 2, 27: 3, 28: 3, 29: 3, 36: 4, 37: 4,               ^SyntaxError: '{' was never closed

复制代码

带括号的上下文管理器

现在支持使用外层圆括号来使多个上下文管理器连续多行地书写。能够使用与之前 import 语句类似的方法,将过长的上下文管理器集格式化为多行的形式。例如下面的示例代码:

代码语言:javascript
复制
with (CtxManager() as example):    ...with (    CtxManager1(),    CtxManager2()):    ...with (CtxManager1() as example,      CtxManager2()):    ...with (CtxManager1(),      CtxManager2() as example):    ...with (    CtxManager1() as example1,    CtxManager2() as example2):    ...

复制代码

新的类型联合运算符

启用X | Y语法的类型联合运算符,在类型提示中,提供了比typing.Union 更清晰简洁的方式。

在之前的 Python 版本中,要为可接受多种类型参数的函数应用类型提示,需要这么写:

代码语言:javascript
复制
def square(number: Union[int, float]) -> Union[int, float]:    return number ** 2

复制代码

现在类型提示可以使用更简洁的写法:

代码语言:javascript
复制
def square(number: int | float) -> int | float:    return number ** 2

复制代码

类型别名

新增类型别名的概念,使用 TypeAlias 显示标注类型别名,减少混淆或难以区分类型别名和普通赋值的情况,提高可读性。例如下面的代码:

代码语言:javascript
复制
StrCache = 'Cache[str]'  # a type aliasLOG_PREFIX = 'LOG[DEBUG]'  # a module constant

复制代码

现在typing模块使用一个特殊值 TypeAlias 表明这是个类型别名:

代码语言:javascript
复制
StrCache: TypeAlias = 'Cache[str]'  # a type aliasLOG_PREFIX = 'LOG[DEBUG]'  # a module constant

复制代码

函数 zip 新增 strict 参数严格模式

Python 3.10.0 中对于 zip 新增加可选参数 strict。顾名思义,strict 参数就是要严格遵守参数长度的匹配原则,用于要求所有可迭代对象的长度都相等。当该选项为 True 时,传入 zip 的两个可迭代项长度必须相等,否则就会报错 ValueError。旧的版本中,没有 strict 参数的情况下,长度不等时,以较小的为准。

其他更新改动内容诸如结构化模式匹配、自定义类型保护器、形参规格变量、弃用 distutils 模块、要求 OpenSSL 1.1.1 或更新的版本等内容与更多优化改进请查阅官方文档。

参考链接:

https://www.tiobe.com/tiobe-index/

https://www.python.org/downloads/release/python-3100/

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/MJDGj8WZFp9TSolAKmed
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券