You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中walrus operator(海象运算符)的运算优先级顺序是怎样的?

海象运算符优先级说明

海象运算符(:=)是Python 3.8引入的赋值表达式运算符,优先级在所有Python运算符中仅高于逗号表达式,属于优先级极低的运算符。

以下是加入W(代表海象运算符)的拓展PEMDAS优先级表,按优先级从高到低排列:

  • P:括号/分组(()),优先级最高
  • E:指数运算(**)
  • 前缀正负号(+x、-x)
  • M/D:乘、除、取模、地板除(*、/、%、//)
  • A/S:加、减(+、-)
  • 位移运算(<<、>>)
  • 按位与(&)
  • 按位异或、按位或(^、|)
  • 比较运算符(==、!=、<、>、<=、>=、in、not in、is、is not)
  • 布尔非(not)
  • 布尔与(and)
  • 布尔或(or)
  • W:海象运算符(:=)
  • 逗号表达式(,)

因为海象运算符优先级极低,大多数情况下如果要把赋值结果参与其他运算,都需要给海象表达式加括号,否则会出现不符合预期的结果:

# 错误用法:无括号时先执行比较运算,再赋值
count = 0
while count := count + 1 < 3:
    print(count)
# 以上代码会无限输出True,因为先算count+1 <3,结果为True赋值给count,下一轮循环True+1=2还是<3,永远成立

# 正确用法:加括号优先执行海象赋值
count = 0
while (count := count + 1) < 3:
    print(count)
# 输出1、2,符合预期

内容的提问来源于stack exchange,提问作者Nathan Dai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 20:27:02