Python 3.11 的新功能和修复

2024 年 8 月 29 日 | 阅读 3 分钟

在本教程中,我们将学习 Python 3.11 的新特性。Python 社区正在努力使 Python 变得更好并提高其性能。现在,他们在新版本的 Python 编程语言中带来了令人兴奋的新特性和属性。

Python 3.11 刚刚发布,我们大多数人对其新修复的内容还不知道。我们将列出 Python 最重要的特性,并理解它们对 Python 开发者的重要性。最新版本的 Python 更快、更用户友好。经过十七个月的开发,现在可以用于生产环境了。

增强的错误信息

详细的错误信息有助于我们更快地调试程序。感谢 Python 3.11,它提供了详细的错误信息。然而,Python 3.10 已经有了更好的错误报告。现在,Python 3.11 在此基础上进行了扩展,提供了关于给定表达式的具体哪个部分导致错误的详细反馈。让我们来看一个例子。

示例 -

Python 3.10 将返回以下输出 -

输出

Traceback (most recent call last):
  File "<string>", line 3, in <module>
ZeroDivisionError: division by zero

而 3.11 则会指示哪个部分是错误的原因。

输出 -

Traceback (most recent call last):
  File "<string>", line 3, in <module>
    result = (x / y ) * (a / b )
              ~~~~^^^
ZeroDivisionError: division by zero

我们可以清楚地看到这两个输出之间的差异。它有一个错误定位器 ~~~~^^^,它表明 **x** 或 **y** 为零。我们可以确定哪个部分是错误的原因。当我们的代码变得复杂时,这种注释会更有用。

速度改进

Python 3.11 进行了许多性能改进,但最先进的改进是专门化的自适应解释器。由于对象的类型很少改变,解释器现在会尝试分析正在运行的代码,并用类型特定的字节码替换通用字节码。在 Python 3.11 版本中,函数调用现在占用的内存更少,并且设计更有效率。递归调用比以前的版本更有效。Python 解释器启动速度也更快,Python 运行时所需的核心模块存储和加载也更有效率。

根据 Python 的官方文档,Python 3.11 的运行速度比 Python 3.10 快 1.25 倍。然而,速度改进是一个综合性的衡量标准,这意味着有些东西运行得更快,有些东西运行得稍快或速度相同。但最好的是,它们是开源的。我们不需要支付一分钱。我们不需要对 Python 程序进行任何代码更改就可以利用 Python 3.11 的加速。

异常改进

异常是 Python 的错误处理机制,在 Python 3.11 中获得了很多新功能。

  • 使用新的 except* 语法和新的 ExceptionGroup 异常类型,可以一次引发和处理多个异常。这使得优雅地处理可以同时引发多个错误的场景,例如处理异步或并发方法,或者在重试操作时处理多个失败。
  • 零成本异常 - 此功能包括异常在实际引发之前没有成本。这意味着 try/except 运行更快,占用的内存更少。
  • 新版本捕获异常的速度提高了 10%。
  • 异常可以添加上下文注释,与异常文本本身分开。

标准库中 TOML 只读支持

Python 提供了 TOML(Tom's Obvious Minimal Language)作为一种配置格式,但没有提供一个标准库模块来读取 TOML 格式的文件。Python 3.11 提供了 tomlib 来解决这个问题。

从标准库中移除“死电池”(不常用的模块)

Python 3.11 从 Python 标准库中移除了许多“死电池”,即过时或未维护的模块。Python 还标记了许多库将被移除;它们将在 Python 3.13 中完全移除。

类型提示改进

Python 提供了类型提示功能,可以使大型代码库易于管理和分析,并且自 Python 3.5 以来,这一功能得到了显著增强。Python 3.11 带来了一些新的类型提示功能。


下一个主题Python Arrows