海象运算符
海象运算符(:=)的英文原名叫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依旧可以被正常访问。