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
Stay connected
最初于 2022 年 5 月 9 日在 https://betterdatascience.com 上发布。[0]
文章出处登录后可见!