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

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.

相关推荐
热点推荐
还没解决伊朗,美国已经暴露真实意图:打算用48架F35给中国添堵

还没解决伊朗,美国已经暴露真实意图:打算用48架F35给中国添堵

空天力量
2026-04-14 17:58:20
马伊琍官宣喜讯不到24小时,文章高调求复合姚笛才是笑到最后

马伊琍官宣喜讯不到24小时,文章高调求复合姚笛才是笑到最后

智慧生活笔记
2026-04-12 16:43:48
印度娃被蛇咬,家人给他扔恒河泡12个小时洗毒??这没毒死都淹死了吧...

印度娃被蛇咬,家人给他扔恒河泡12个小时洗毒??这没毒死都淹死了吧...

英国那些事儿
2026-04-14 23:15:49
黄灿灿自曝为了防止《浪姐》恶意剪辑,每天都会梳不一样的头发

黄灿灿自曝为了防止《浪姐》恶意剪辑,每天都会梳不一样的头发

韩小娱
2026-04-13 16:42:00
外媒:SpaceX在约19小时内完成两次星链卫星发射

外媒:SpaceX在约19小时内完成两次星链卫星发射

CNMO科技
2026-04-15 18:16:11
53条中日航线停止第4天,高市终于低头,得罪中国的人被送入大牢

53条中日航线停止第4天,高市终于低头,得罪中国的人被送入大牢

阿器谈史
2026-04-16 01:43:17
最新人口数据公布!2025年人口出生率再创历史新低,老年人口占比再创历史新高

最新人口数据公布!2025年人口出生率再创历史新低,老年人口占比再创历史新高

谭老师地理大课堂
2026-04-15 20:11:42
116家公司推出送转方案

116家公司推出送转方案

证券时报
2026-04-15 09:56:10
吴千语现实长什么样?路人镜头才是“照妖镜”,突然理解施伯熊了

吴千语现实长什么样?路人镜头才是“照妖镜”,突然理解施伯熊了

临云史策
2026-04-15 10:51:54
英海事分析公司:有船舶突破美国对伊朗港口封锁

英海事分析公司:有船舶突破美国对伊朗港口封锁

新华社
2026-04-16 01:43:02
美人计,每一幅都是顶级人像

美人计,每一幅都是顶级人像

国际艺术大观
2026-03-22 20:39:36
尹锡悦双眼通红地望着金建希,金建希没看他

尹锡悦双眼通红地望着金建希,金建希没看他

天真无牙
2026-04-14 17:44:27
以为是假新闻其实是真新闻,从袁立到王星,件件离谱又惊人

以为是假新闻其实是真新闻,从袁立到王星,件件离谱又惊人

上官晚安
2026-01-06 08:08:35
欧冠决赛稳了?阿森纳半决赛对手确定,小组赛曾4球血洗对手

欧冠决赛稳了?阿森纳半决赛对手确定,小组赛曾4球血洗对手

夜白侃球
2026-04-15 09:42:25
湖南一工地挖出约3吨古钱币,年代最早是唐代开元通宝,最晚的是绍定通宝

湖南一工地挖出约3吨古钱币,年代最早是唐代开元通宝,最晚的是绍定通宝

三湘都市报
2026-04-15 19:37:07
1998年,我娶了一个怀了别人孩子的女教师,新婚夜她交给我一封信

1998年,我娶了一个怀了别人孩子的女教师,新婚夜她交给我一封信

千秋文化
2026-04-11 20:04:55
47岁薛佳凝参加泼水节,没生娃也有大肚腩,生图看着比精修胖20斤

47岁薛佳凝参加泼水节,没生娃也有大肚腩,生图看着比精修胖20斤

柒佰娱
2026-04-15 11:04:30
你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

你们都是什么时候对男女之事开窍的?网友:果然还是拦不住有心人

夜深爱杂谈
2026-02-21 21:37:02
39岁前国脚现状:定居美国踢野球,早已财富自由,有2个可爱女儿

39岁前国脚现状:定居美国踢野球,早已财富自由,有2个可爱女儿

揽星河的笔记
2026-04-14 15:18:30
追梦:伦纳德太强没人能单防,我仿佛看到七年前总决赛时的他

追梦:伦纳德太强没人能单防,我仿佛看到七年前总决赛时的他

懂球帝
2026-04-15 12:14:32
2026-04-16 03:07:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

ChatGPT十亿用户又怎样?Anthropic直接贴脸

头条要闻

法国全票通过 “将不义之财归还中国”

头条要闻

法国全票通过 “将不义之财归还中国”

体育要闻

三球准绝杀戴大金链:轰30+10自我救赎

娱乐要闻

谢娜现身环球影城,牵手女儿温馨有爱

财经要闻

业绩失速的Lululemon:"健康"人设崩塌?

汽车要闻

空间丝毫不用妥协 小鹏GX首发评测

态度原创

时尚
本地
房产
公开课
军事航空

赫本爱穿的伞裙,好优雅!

本地新闻

12吨巧克力有难,全网化身超级侦探添乱

房产要闻

重磅调规!341亩商改住+中小学用地!宝龙城这把稳了?

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

万斯:对当前美伊局势进展“感到乐观”

无障碍浏览 进入关怀版