Python 3.11 的 3 大新特性:做好准备

Python 3.11 尚未发布,但您可以试用 RC 版本。剧透警报:太神奇了——Python 3.11 预计将于 2022 年 10 月播出。还有五个月的时间,那么炒作是怎么回事?像往常一样,我们可以测试 RC 版本,看看它与 Python 3.10 相比如何。这正是我所做的。我设置了两个 Docker 容器,一个用于 Python 3.10 和……

Python 3.11 的 3 大新特性:做好准备

Python 3.11 尚未发布,但您可以试用 RC 版本。剧透警告:太神奇了

Python 3.11 预计将于 2022 年 10 月播出。还有五个月的时间,那么炒作是怎么回事?像往常一样,我们可以测试 RC 版本,看看它与 Python 3.10 相比如何。

这正是我所做的。我设置了两个 Docker 容器,一个用于 Python 3.10,另一个用于 Python 3.11,并将它们附加到单独的 Visual Studio Code 窗口。我们将在两者中运行完全相同的代码,看看新版本带来了什么。[0][1]

TL;DR — 有很多新功能,但我决定写三个。这些是更好的错误位置、异常注释和内置的 TOML 解析器。与较旧的 Python 版本相比,这是一个相当大的改进。有关新功能的完整列表,请参阅官方变更日志。[0]

你知道 Python 3.11 将比 Python 3.10 快 60% 吗?这是一个详细的基准。[0]

不想读书?请观看我的视频:

Python 3.11 功能 #1 — 增强的错误位置

打印回溯时,Python 解释器现在将指向导致错误的确切表达式,而不仅仅是行。例如,下面的代码片段会抛出错误,因为给定索引处的列表项不存在:

if __name__ == "__main__":
l = [1, 2, 3]
print(l[3])

在 Python 3.10 中,您将获得以下输出:

另一方面,Python 3.11 将打印以下内容:

Python 3.11 强调了导致错误的代码的确切部分,这很简洁。这个故事与 Python 字典类似。以下代码片段将引发错误,因为字典没有该键:

if __name__ == "__main__":
d = {"key1": "value1", "key2": "value2"}
print(d["key3"])

这是 Python 3.10 的结果:

这是 Python 3.11 的输出:

Python 3.11 再次强调了导致错误的代码的确切部分。

Python 3.11 特性 #2 — 异常说明

Python 的 Exception 类在 Python 3.11 中将具有 __note__ 属性。默认情况下它是 None ,但你可以用你想要的任何字符串覆盖它。当然,这不是最具开创性的功能,但如果您有几十个自定义异常类,这里和那里的注释会派上用场。

这是我们将在两个容器中运行的代码:

class CustomException(Exception):
__note__ = "Note about my custom exception"
if __name__ == "__main__":
raise CustomException()

这是 Python 3.10 的输出:

如您所料,Python 3.10 的 Exception 类不知道新属性。 Python 3.11 完全不同:

Python 3.11 再次强调了导致错误的确切行——在这种情况下很明显——但它也在最后打印了我们的注释。

Python 3.11 功能 #3 — 内置 TOML 解析器

TOML 或 Tom’s Obvious Minimal Language 是一种最小配置文件格式。在 Python 3.11 之前,没有用于处理 TOML 配置文件的内置库。现在情况发生了变化。[0]

下面是我们将在两个容器中运行的代码片段:

import tomllib DOC = """
[main]
python_version = 3.11
[api]
endpoint_users = "/api/v2/users"
endpoint_posts = "/api/v2/posts"
"""
if __name__ == "__main__":
doc_parsed = tomllib.loads(DOC)
print(doc_parsed)

Python 3.10 没有 tomllib 库,因此会立即引发异常:

Python 3.11 支持它,因为解析 TOML 字符串没有问题:

安装一个用于解析 TOML 文件的专用库当然需要几秒钟的时间,但很高兴看到它将成为新版本的内置功能。

Python 3.11 新特性总结

我们已经介绍了 Python 3.11 中的三个特性。当然,还有其他类型,例如 self 类型、异常组、异步推导等等,但如果您有兴趣,可以参考官方变更日志。[0]

新 Python 版本带来的最大改进可能是速度的提高。平均而言,Python 3.11 将比 Python 3.10 快 15%,差异高达 64%。我在详细的基准测试文章中对两者进行了比较,因此请务必查看。[0]

你最喜欢的 Python 3.11 特性是什么?请在下面的评论部分告诉我。

喜欢这篇文章吗?成为 Medium 会员,继续无限制地学习。如果您使用以下链接,我将收到您的一部分会员费,您无需支付额外费用。[0]

Recommended reads

  • 5 本学习数据科学先决条件(数学、统计和编程)的最佳书籍[0]
  • 2022 年学习数据科学的前 5 本书[0]
  • 在 Python 中打印列表的 7 种方法[0]

Stay connected

  • 聘请我作为技术作家[0]
  • Subscribe on YouTube[0]
  • Connect on LinkedIn[0]

最初于 2022 年 5 月 9 日在 https://betterdatascience.com 上发布。[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年5月11日
下一篇 2022年5月11日

相关推荐