










海象运算符 (:=),也称为赋值表达式运算符,于 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
以上。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。