写点什么

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

  • 2021 年 10 月 09 日
  • 本文字数:2188 字

    阅读完需:约 7 分钟

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 并指向某个不正确的位置。

 

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

 

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()
复制代码

 

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

 

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

 

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

 

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 语句类似的方法,将过长的上下文管理器集格式化为多行的形式。例如下面的示例代码:

 

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 版本中,要为可接受多种类型参数的函数应用类型提示,需要这么写:

 

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

 

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

 

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

类型别名

 

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

 

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

 

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

 

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/


关联阅读:


2021 最 Top 的编程语言是 Python,而不是 JavaScript?


Python 之父:Python 4.0 可能不会有了

2021 年 10 月 09 日 12:455658

评论

发布
暂无评论
发现更多内容

信息架构升级|宜搭邀你体验「沉浸式」应用搭建

钉钉宜搭低代码

钉钉 低代码 数字化 钉钉宜搭

把管理做简单

Ian哥

项目管理 十六个字 阿里管理箴言

为啥你写的代码老有大串的if/else?

华为云开发者社区

代码 if for循环 else

钉钉宜搭亮相“第二届ISIG中国产业智能大会”:云钉低代码,构建企业酷应用

钉钉宜搭低代码

钉钉 低代码 数字化 钉钉宜搭 ISIG

Flutter 2.8 的新特性【Flutter 专题 20】

坚果

flutter 28天写作 12月日更

让工具成为双手的延伸

Zilliz

数据库 书籍推荐 程序 书籍

【架构实战营】-模块一作业

糖糖学编程

架构实战营

全链路数据血缘在满帮的实践

华为云开发者社区

sql 图数据库 图计算 全链路数据血缘 数据血缘

安全办公 |企业级IM即时通讯私有云解决方案

WorkPlus Lite

Java 程序员必须掌握的 10 款开源工具

编程江湖

java编程 java开发工具

模块一学习总结

糖糖学编程

架构实战营

【LeetCode】最短补全词Java题解

HQ数字卡

算法 LeetCode 12月日更

前端开发:npm run serve和npm run dev的区别

三掌柜

28天写作 21天挑战 12月日更

Maven进阶(三):配置多仓库

No Silver Bullet

maven 12月日更

面试官:你是怎样理解Fiber的

全栈潇晨

React react fiber

从0到1教你如何使用 p5.js 绘制简单的动画

海拥(haiyong.site)

大前端 动画 28天写作 签约计划第二季 12月日更

团队基建系列 - 组织知识传承 4 破局

Hillz

团队成长

架构实战营模块一作业

马志峰

「架构实战营」

给弟弟的信第8封|计算机专业应该掌握的知识

大菠萝

28天写作

Go语言学习查缺补漏ing Day7

恒生LIGHT云社区

golang Go 语言 编程语言‘

数据库事务的三个元问题

Zilliz

数据库 数据库设计

聊聊程序员35岁危机

全栈潇晨

程序员 大前端 35岁危机

Redis(一):单线程为何还能这么快?

IT巅峰技术

redis 分布式 架构师 分布式缓存 Java Redis

react源码解析6.legacy模式和concurrent模式

zhang_a111

React

Linux运维,Linux系统学习

侠盗安全

Linux linux运维 运维工程师 云计算架构师

DataPipeline携手云南开放大学,以实时数据融合助力高校精细化管理

DataPipeline数见科技

数据库 中间件 Big Data 数据融合 高校

万字长文--基于业务视角的上云实践

hackstoic

DevOps 运维 云原生 架构设计 签约计划第二季

SAP Spartacus Session affinity

Jerry Wang

后端 28天写作 12月日更 Spartacus 会话

拆分电商系统为微服务

Steven

架构实战营

react源码解析3.react源码架构

zhang_a111

React react fiber

Flutter 自定义 ACEFoldTextView 折叠文本

阿策小和尚

28天写作 0 基础学习 Flutter 内容合集 签约计划第二季 12月日更

Python 登顶 TIOBE 结束多年霸榜,新版本发布带来多项功能更新_语言 & 开发_marsxxl_InfoQ精选文章