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字符。