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

为什么Python表达式1 in {1} == True的运行结果为False?

问题原因

这一现象是Python的比较运算符链式语法导致的,和运算符优先级、从左到右的求值顺序规则并不冲突。

Python中所有比较运算符(包含in、not in、==、!=、<、>等)都支持链式比较规则:形如a op1 b op2 c的表达式,等价于(a op1 b) and (b op2 c),且中间的b只会被求值一次。

你给出的代码1 in {1} == True实际等价于以下逻辑:

(1 in {1}) and ({1} == True)

分别计算两个子表达式:

  • 1 in {1} 结果为 True
  • {1} == True 结果为 False,注意:非空集合仅在布尔上下文判定中为真,做相等判断时,只有数值1和布尔值True相等,集合{1}和True的相等判定结果为假

两个子表达式做逻辑与运算,最终结果就是False。

误区说明

你之前认为表达式应该按(1 in {1}) == True计算,是对链式比较规则不了解导致的。如果强行按运算符优先级错误给表达式加括号为1 in ({1} == True),就会触发你提到的TypeError,也验证了Python并没有按这种优先级逻辑解析表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:33:02