Python3 :=海象运算符

python 3.8正式版更新之后,海象运算符获得正式python版本的支持。
官网介绍:
There is new syntax:=that assigns values to variables as part of a larger expression. It is affectionately known as “the walrus operator” due to its resemblance to the eyes and tusks of a walrus.
翻译:
这是一种新的语法,它是一个强大的表达式,赋值语句会被当做表达式的一部分。由于这个操作符很像海象的眼睛和象牙,所以我们亲切的称之为“海象操作符”。
官网给了一些例子:

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

在这个例子里面,文档强调通过使用海象表达式,避免len()方法运行两次,从而提高了运行速度.
假如在没有海象运算符的时候,我们会怎么来写这段代码呢?来试一试:

if len(a) > 10:
    print(f"List is to long({len(a)} elements, expected <= 10)")

或者这样写,避免使用两次len方法,却又多了一次赋值给中间变量的步骤.

n = len(a)
if n > 10:
    print(f"List is to long({n} elements, expected <= 10)")

再看另外一个例子, while循环控制,还是省去了赋值的步骤:

# Loop over fixed length blocks
while (block := f.read(256)) != '':
    process(block)

该代码读取一个文件,当不为空执行操作,同样看没有海象运算符,我们会怎么写:

while 1:
    block = f.read(256)
    if block != '':
        process(block)

同样是赋值一气呵成,这让我认为海象运算符的作用在于,把变量赋值和其它语句(比如判断语句)合并,然后,变量可以在代码块里执行运用.
因此海象运算符既能简化流程,又能提高运算速度。

发布了34 篇原创文章 · 获赞 33 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/menghuanshen/article/details/104229848
今日推荐