Python 海象运算符

说明

海象运算符 (:=),也称为赋值表达式运算符,于 Python 3.8 版本中引入。:= 允许在表达式内部进行变量赋值,并返回赋的值,从而减少代码行数,增加可读性。

海象运算符在文法上与一般赋值等同,但语义动作有区别,如下图所示。我们额外与 C 进行了对比。

image

用法示例

以列表生成式为例,我们想要将列表处理成一个大顶堆。由于 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

以上。

posted @ 2025-06-09 01:58  Miya_Official  阅读(69)  评论(0)    收藏  举报