Python 海象运算符
说明
海象运算符 (:=
),也称为赋值表达式运算符,于 Python 3.8 版本中引入。:=
允许在表达式内部进行变量赋值,并返回赋的值,从而减少代码行数,增加可读性。
海象运算符在文法上与一般赋值等同,但语义动作有区别,如下图所示。我们额外与 C 进行了对比。
用法示例
以列表生成式为例,我们想要将列表处理成一个大顶堆。由于 heapify()
是原地操作,没有返回值,从而需要单独声明一个变量 (虽然这里还是传给了 heap
)。一般写法为
# heap = [2, 1, 3]
heap = [-e for e in heap]
heapify(heap)
如果有列表生成式,则可以简化为
heapify(heap := [-e for e in heap])
注意事项
Python 拒绝在推导式的 iterable
部分使用海象运算符,因为这样可能会导致代码可读性降低,甚至引发歧义。
# ... for x in X := ...
SyntaxError: assignment expression cannot be used in a comprehension iterable expression
以上。