python 3.10 终于在2021年10月4号进行了发布。有一些我翘首以盼的功能终于有了。不过这段时间比较忙。以至于一直没有时间来写点东西。
错误信息的详细化
python以往有一些报错信息是比较尴尬的。就是一句简单的invalid syntax
,往往我们并不知道错误发生在哪里。可是之后的SyntaxError也能给出详细的错误信息了。
比如test1,py
文件中的代码:
while a = b:
输出的错误差异性如下图所示:
Union的退休
在以前的版本中如果想说明一个参数既可以是int
又可以是float
的话,在之前是这么做的
from typing import Union
def test(num: Union[int, float]) -> Union[int, float]:
return num + 1
print(test(22))
而现在3.10引进的并集运算,可以直接这么做
def test1(num: int | float) -> int | float:
return num + 1
print(test1(12))
这样子的好处就是在于代码更加的清晰简单化了,同样该语法适用于isinstace()
和issubclass()
match-case语句的引入
当然了,现在说的这个才是重头戏,python要支持类似于switch-case
的句柄语法了吗,他就是match-case
match
语句将对跟在其后表达式与case
语句中的每个模式从上到下进行比较,直到找到匹配的模式。若找不到匹配的表达式,则匹配_
通配符(wildcard,实际上它就是其它语言中的default
分支。
代码示例如test3.py
:
def numExample(num):
match num:
case 1:
print('这是1')
case 2:
print('这是2')
case 3:
print('这是3')
case 4:
print('这是4')
case _:
print('这个不存在分支')
numExample(3)
numExample(1)
numExample(5)
这个代码的输出如下图所示:
这个句柄的引入给我们带来的方便是难以想象的,像我之前用的一长串if else终于可以退休了。那简直就是梦魇