全文3000字,预计阅读时间20min,建议先赞后看!
一.上下文管理器
python3.10 中,with 支持使用外层圆括号来使用多个上下文管理器,可以连续多行地书写。这允许将过长的上下文管理器集能够以与之前 import 语句类似的方式格式化为多行的形式。例如,以下这些示例写法现在都是有效的:
with (CtxManager() as example):
pass
with (
CtxManager1(),
CtxManager2()
):
pass
with (CtxManager1() as example,
CtxManager2()):
pass
with (CtxManager1(),
CtxManager2() as example):
pass
with (
CtxManager1() as example1,
CtxManager2() as example2
):
pass
二.新增结构化模式匹配
python3.10 中新增的结构化模式匹配,主要由 match、case 两个关键字实现,模式匹配的通用语法如下
status = 404
match status:
case 400:
res = "Bad request"
case 404:
res = "Not found"
case 418:
res = "I'm a teapot"
case _:
res = "Something's wrong with the internet"
match 语句接受一个表达式并将其值与以一个或多个 case 语句块形式给出的一系列模式进行比较。具体来说,模式匹配的操作如下:
使用具有特定类型和形状的数据 (subject) 针对 subject 在 match 语句中求值 从上到下对 subject 与 case 语句中的每个模式进行比较直到确认匹配到一个模式。 执行与被确认匹配的模式相关联的动作。 如果没有确认到一个完全的匹配,则如果提供了使用通配符 _ 的最后一个 case 语句,则它将被用作已匹配模式。如果没有确认到一个完全的匹配并且不存在使用通配符的 case 语句,则整个 match 代码块不执行任何操作。
三.新的类型联合运算符
python3.10 中引入了启用 X | Y 语法的类型联合运算符。这提供了一种表示 '类型 X 或类型 Y' 的相比使用 typing.Union 更清晰的方式,特别是在类型提示中。在之前的 Python 版本中,要为可接受多种类型参数的函数应用类型提示。
def square(number: Union[int, float]) -> Union[int, float]:
return number ** 2
类型提示现在可以使用更简洁的写法:</