Python 3.10版本新增了哪些功能?


在本文中,我们将学习Python 3.10相比于3.9的新功能。让我们看看这些功能:

带括号的上下文管理器

现在支持在上下文管理器中使用括号来跨多行延续。这允许以类似于以前在import语句中可能的方式,将长上下文管理器的集合格式化成多行。

用户定义的类型守卫

TypeGuard已添加到typing模块中,用于注释类型守卫函数,并在类型缩小期间为静态类型检查器提供更多信息。

改进的错误消息

如果运行Python程序时出现错误,错误消息现在将更加准确,并提供确切的错误信息。

SyntaxError(语法错误)

当解析包含未关闭的括号或方括号的代码时,解释器现在将包含未关闭括号或方括号的位置,而不是显示SyntaxError: unexpected EOF while parsing或指向某些不正确的位置。

解释器引发的SyntaxError异常现在将突出显示构成语法错误本身的表达式的完整错误范围,而不是仅突出显示检测到问题的位置。

IndentationError(缩进错误)

许多IndentationError异常现在包含更多关于什么类型的块需要缩进的上下文信息。

精确的行号用于调试

更精确和可靠的行号用于调试、性能分析和代码覆盖工具。跟踪事件(带有正确的行号)将为所有执行的代码行生成,并且仅为执行的代码行生成。

结构化模式匹配

结构化模式匹配已以match语句和具有关联操作的case语句模式的形式添加。模式由序列、映射、原始数据类型以及类实例组成。模式匹配使程序能够从复杂的数据类型中提取信息,根据数据结构进行分支,并根据不同形式的数据应用特定操作。

增强的模块

以下模块通过新功能、新方法等进行了增强。

array − array.array的index()方法现在具有可选的start和stop参数。

base64 − 添加了base64.b32hexencode()和base64.b32hexdecode()以支持带有扩展十六进制字母表的Base32编码。

bisect − 为bisect模块中的API添加了提供键函数的可能性。

contextlib − 添加了一个contextlib.aclosing()上下文管理器,以安全地关闭异步生成器和表示异步释放资源的对象。

distutils − distutils包已弃用,将在Python 3.12中移除。

encodings − encodings.normalize_encoding()现在忽略非ASCII字符。

更新于:2022年9月16日

浏览量:207

开启您的职业生涯

完成课程获得认证

开始学习
广告