Python 海象运算符的运用

海象运算符

海象运算符(:=)的英文原名叫Assignment Expresions ,即赋值表达式。是Python 3.8新增的语法。

在介绍该运算符之前先看一个函数,函数需求如下:判断一个列表的长度是否大于7,若大于则输出该长度并直接退出

def fun(lst: list):
    if len(lst) > 7:
        print(f"{len(lst)}")
        return
    
    # 其他逻辑

可以发现函数当中存在的一个问题, len(lst)在命中if语句时还会在print中再被计算一次。因此我们可以对上述函数进行一次改进

def fun(lst: list):
    n = len(lst)
    if n > 7:
        print(f"{n}")
        return
    
    # 其他逻辑

我们通过将计算结果保存的方式避免多次计算。

此次改进之后我们可以发现n被声明在if之外,这会给人一种n非常重要,后面的代码可能还会用到。也就是说这样的写法无法表现出n是一个临时变量。

海象运算符可以帮我们做到形与意合,我们可以做到进一步改进

def fun(lst: list):
    n = len(lst)
    if (n := len(lst)) > 7:
        print(f"{n}")
        return
    
    # 其他逻辑

到此处,从语法上看我们就可以非常明确的知道n只会在if语句内被使用。

但需要注意的是,这样的写法只是一个语法糖。也就是说从n的作用域来讲if语句之后n依旧可以被正常访问。