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)使用。