网易首页 > 网易号 > 正文 申请入驻

Python:海象运算符 :=

0
分享至

海象运算符 := 是 Python 向表达式赋值机制迈进的重要一步。它的加入并不是为了让你炫技,而是让你在合适的地方,写出更紧凑、清晰的代码。

一、海象运算符

海象运算符 := 是 Python 3.8 引入的新语法,用于在表达式中直接赋值,也叫作 “赋值表达式”(Named Expression)。

它的形状像一只海象的脸(两个眼睛和一根獠牙),因此被亲切地称为“海象运算符”。

语法结构:

变量 := 表达式

这表示:先计算表达式的值,再赋给变量。

二、为什么要海象运算符?

在 Python 3.8 之前,我们只能将赋值单独写成一行。

例如:

value = input("请输入内容:")
if value != "":
    print("你输入了:", value)

使用海象运算符后,可以将赋值嵌入表达式内部,节省代码行数。

if (value := input("请输入内容:")) != "":
    print("你输入了:", value)

这样写代码更简洁,特别是在循环、条件判断、推导式等语境中非常有用。

三、典型用法

1、在循环中读取并判断(精简写法)

传统写法:

line = input(">>> ")
while line != "quit":
    print(line.upper())
    line = input(">>> ")

使用海象运算符:

while (line := input(">>> ")) != "quit":
    print(line.upper())

使用 := 在 while 条件中赋值,不再需要重复写。

2、精简文件读取循环

with open("data.txt") as f:
    while (line := f.readline()):
        print(line.strip())

不再需要 line = f.readline() + if not line: break 的组合,结构更紧凑。

3、简化数据处理中的重复计算

旧写法(需要计算两次):

data = get_data()
if len(data) > 10:
    print("数据过多:", len(data))

海象写法:

if (n := len(data := get_data())) > 10:
    print("数据过多:", n)

或者拆开更易读:

data = get_data()
if (n := len(data)) > 10:
    print("数据过多:", n)

4、在列表推导中避免重复计算

strings = ["apple", "cat", "banana", "egg"]
longs = [s for s in strings if (length := len(s)) > 4]

若需要同时筛选并记录长度,这种方式比多次调用 len() 更高效。

5、配合正则表达式匹配并提取数据

import re
line = 'IP: 192.168.1.1, status: 200'
if (match := re.search(r"(\d+\.\d+\.\d+\.\d+)", line)):
    print("找到 IP:", match.group(1))

无需单独定义变量 match = ...,代码更清爽。

四、注意事项

1、括号使用很重要

强烈建议加括号,才能避免优先级错误。

# 正确
if (x := func()) > 10:
    ...

# 错误(优先级问题)
if x := func() > 10:  # 实际解释为 x := (func() > 10)
    ...

2、不能与普通赋值连用

# 错误!
y = x := 10  # 会抛出 SyntaxError

必须写成两行:

x := 10  # 不行(只能用在表达式中)
x = 10   # ✅ 普通赋值

3、不推荐在 lambda 中使用

虽然语法允许,但非常不易读,建议避免。

# 不推荐
lambda x: (y := x + 1)

五、补充说明

海象操作符 := 是现代 Python 的“边算边存”神器,用好它能写出更简洁、更高效的代码。但要谨慎使用括号,控制嵌套层级,始终把可读性放在首位。

1、建议使用场景

(1)循环中需要赋值判断的场合(如输入、读取、匹配)。

(2)推导式中避免重复计算。

(3)判断条件中需要保存表达式结果。

2、不建议使用场景

(1)嵌套太深、可读性差的表达式。

(2)简单场景写成海象只是“炫技”。

(3)为了用而用,反而让代码更晦涩。

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
男篮大胜格鲁吉亚!李弘权+2后卫合砍44分,贺希宁再现低迷!

男篮大胜格鲁吉亚!李弘权+2后卫合砍44分,贺希宁再现低迷!

篮球资讯达人
2026-07-25 21:26:07
2-3遭逆转!卫冕冠军出局,中国女排输得更惨,也无缘世联赛决赛

2-3遭逆转!卫冕冠军出局,中国女排输得更惨,也无缘世联赛决赛

侃球熊弟
2026-07-25 18:46:58
携程公布十九项整改措施:停止独家合作行为,保障酒店经营者自主经营权

携程公布十九项整改措施:停止独家合作行为,保障酒店经营者自主经营权

界面新闻
2026-07-25 15:10:49
笑疯!乱港头目胡志伟蹲完监狱立即飞英国求“庇护”,谁知一下飞机就被英方扣留且被告知将被遣返,靠BNO移英的乱港分子们傻眼了!

笑疯!乱港头目胡志伟蹲完监狱立即飞英国求“庇护”,谁知一下飞机就被英方扣留且被告知将被遣返,靠BNO移英的乱港分子们傻眼了!

澳门月刊
2026-07-24 10:46:37
北京的隐形土豪真的太多了

北京的隐形土豪真的太多了

微微热评
2026-07-25 18:34:05
湖人在詹姆斯加盟76人后,表明将布朗尼·詹姆斯交易至76人的明确态度

湖人在詹姆斯加盟76人后,表明将布朗尼·詹姆斯交易至76人的明确态度

夜白侃球
2026-07-25 11:36:52
津门虎2-0客胜海牛斩获3连胜逃离降级区,谢蒂内、基莱斯破门

津门虎2-0客胜海牛斩获3连胜逃离降级区,谢蒂内、基莱斯破门

懂球帝
2026-07-25 19:35:24
被闪电击中继续飞!中国火箭有多硬核?

被闪电击中继续飞!中国火箭有多硬核?

环球网资讯
2026-07-25 16:26:04
前国乒名将侮辱王楚钦:没什么实力!干什么都装 网友:必须道歉

前国乒名将侮辱王楚钦:没什么实力!干什么都装 网友:必须道歉

念洲
2026-07-25 16:54:37
伊朗公布约旦美军基地卫星图:完全摧毁弹药库!

伊朗公布约旦美军基地卫星图:完全摧毁弹药库!

看看新闻Knews
2026-07-25 21:19:00
电影《三国第一部:争洛阳》宣布撤档

电影《三国第一部:争洛阳》宣布撤档

界面新闻
2026-07-25 20:43:35
71岁敬一丹被曝抢救超一个月,丈夫女儿未发声,圈内人士发文悼念

71岁敬一丹被曝抢救超一个月,丈夫女儿未发声,圈内人士发文悼念

娱乐E君
2026-07-24 18:10:04
北大删了邓煜的回答,因为舆论场容不下真话

北大删了邓煜的回答,因为舆论场容不下真话

ICT解读者
2026-07-25 10:30:44
又一金饭碗走下神坛!曾经争抢加入银行的年轻人,如今开始辞职

又一金饭碗走下神坛!曾经争抢加入银行的年轻人,如今开始辞职

青眼财经
2026-07-25 10:23:37
感动流涕!一上海市民失业一年,接到居委会来电推荐工作,发帖感慨引发评论炸锅

感动流涕!一上海市民失业一年,接到居委会来电推荐工作,发帖感慨引发评论炸锅

火山詩话
2026-07-25 15:14:54
新信号!国家要对富豪开征重税了!

新信号!国家要对富豪开征重税了!

樱桃大房子
2026-07-24 23:34:49
“唐山教科书式老赖”案发11年仍拖欠近70万元赔偿金,最新进展:其女儿名下房产或被法院拍卖

“唐山教科书式老赖”案发11年仍拖欠近70万元赔偿金,最新进展:其女儿名下房产或被法院拍卖

大风新闻
2026-07-25 20:20:17
中超保级巨变!海牛重回降级区,或3队同积14分,海港或被拖下水

中超保级巨变!海牛重回降级区,或3队同积14分,海港或被拖下水

奥拜尔
2026-07-25 19:29:42
美国动手了?鲁比奥:菲律宾转移仁爱礁伤员时,美海警牢牢挡住中国海警

美国动手了?鲁比奥:菲律宾转移仁爱礁伤员时,美海警牢牢挡住中国海警

阿龙聊军事
2026-07-25 14:06:38
中国女排0-3土耳其无缘决赛 球员评价:5人优秀,2人及格,5人低迷

中国女排0-3土耳其无缘决赛 球员评价:5人优秀,2人及格,5人低迷

篮球资讯达人
2026-07-25 21:06:43
2026-07-25 22:12:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1983文章数 86关注度
往期回顾 全部

科技要闻

星舰13飞全中!20颗真卫星出舱

头条要闻

菲律宾总统马科斯会见中国大使:希望"重置"中菲关系

头条要闻

菲律宾总统马科斯会见中国大使:希望"重置"中菲关系

体育要闻

拿过两个金球奖,却说它只值10英镑

娱乐要闻

王祖贤这么缺钱吗 竟然把自己卖给了AI

财经要闻

滥用市场支配地位 携程被罚没51.79亿元

汽车要闻

精致硬汉 吉利银河战舰700是台不一样的方盒子SUV

态度原创

艺术
家居
本地
手机
游戏

艺术要闻

《迈阿密先驱报》旧址上,拟建4座“歪歪扭扭”摩天楼!

家居要闻

2026建博会(广州) 公装联探展交流活动

本地新闻

跟着影视去旅行:西游篇

手机要闻

小米神秘旗舰三证齐全:玄戒芯片+OS+AI大模型大会师!全自研

《007 初露锋芒》后续内容开发中!新作也在筹备中

无障碍浏览 进入关怀版