惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
D
Docker
腾讯CDC
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
IT之家
IT之家
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】

博客园 - Miya_Official

解决 JAVA_HOME 系统环境变量修改不生效问题 Coco2017 数据集下载 Office 更新后不可用 Firefox 标签页崩溃 这些扩展程序不再受支持,因此已停用 显卡掉卡问题解决 CUDA/CuDNN/PyTorch 安装配置 微信文件存储位置 CDN 与 PCDN 简介 PyTorch Eager Mode 移动硬盘被占用 无法拔出
Python 海象运算符
Miya_Official · 2025-06-09 · via 博客园 - Miya_Official

说明

海象运算符 (:=),也称为赋值表达式运算符,于 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

以上。