python3.10,实在是太棒了

python 3.10 终于在2021年10月4号进行了发布。有一些我翘首以盼的功能终于有了。不过这段时间比较忙。以至于一直没有时间来写点东西。

错误信息的详细化

python以往有一些报错信息是比较尴尬的。就是一句简单的invalid syntax,往往我们并不知道错误发生在哪里。可是之后的SyntaxError也能给出详细的错误信息了。

比如test1,py文件中的代码:

while a = b:

输出的错误差异性如下图所示:
image-20211101200622

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)

这个代码的输出如下图所示:
image-20211101203339316

这个句柄的引入给我们带来的方便是难以想象的,像我之前用的一长串if else终于可以退休了。那简直就是梦魇

tag(s): python
show comments · back · home
Edit with markdown
召唤看板娘