Python 海象运算符

新版本 Python 里添加了一个语法 Assignment Expressions :=,使用时可以写成这样(代码来自 What’s New In Python 3.8):

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

如果用普通的赋值写法 Assignment Statements,需要写成这样:

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

要说两者的区别,除了写法不一样(一个是 :=,一个是 =),主要的还是 返回值

  • Assignment Expressions 是有返回值的,所以赋值本身可以被继续使用;
  • 而 Assignment Statements 没有返回值,所以从第二个例子看到的,需要单独写一行赋值。

所以,Python 这个新的 Assignment Expressions 和 C 语言里的赋值运算符类似,但不能作为左值(lvalue)使用。

Read More: