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

Python 3.13中|运算符行为异常,是否为预期设计?

这是Python的预期设计行为,而非异常

这不是Python 3.13的异常行为,完全符合语言的设计规范,问题根源在于运算符优先级:

先看你给出的代码:

a=7
b=8
c=7

print(a==c | a==b)  
print((a==c) | (a==b))

第一条语句的执行逻辑

Python中按位或运算符|的优先级高于相等运算符==,所以a==c | a==b会被解释为:
(a == (c | a)) == b
分步计算:

  1. c | a → 7 | 7 = 7
  2. a == 7 → 7 ==7 = True
  3. True == b → True ==8 = False
    最终输出False。

第二条语句的执行逻辑

括号强制改变了运算顺序,优先执行括号内的比较操作:

  1. a==c → 7==7 = True(按位运算中会被转换为整数1)
  2. a==b → 7==8 = False(按位运算中会被转换为整数0)
  3. 1 | 0 = 1,对应布尔值True
    最终输出True。

补充说明

Python的运算符优先级是语言核心规范的一部分,所有版本(包括3.13)都遵循此规则。按位运算符(|、&、^等)的优先级确实高于比较运算符(==、>、<等),如果需要先执行比较再执行按位运算,必须通过括号明确指定运算顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:02:35