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

Python3中表达式True, True, True == (True, True, True)输出异常原因咨询

为什么这些Python表达式的结果和你预期不一样?

这事儿核心是运算符优先级和Python的表达式分组规则在搞鬼,咱们一步步拆解就清楚了!

1. 拆解 True, True, True == (True, True, True)

在Python里,逗号运算符的优先级比==低,所以这个表达式会被Python自动分组为:

(True, True, (True == (True, True, True)))

咱们一步步计算:

  • 先算括号里的True == (True, True, True):布尔值True和一个包含三个True的元组类型不同、值也不相等,结果是False
  • 再把前两个True和这个False用逗号组合成元组,最终就得到了(True, True, False)

2. 为什么 True == (True, True) 结果是False?

这个很直接:你是在拿单个布尔值True和一个包含两个True的元组做比较。Python里不同类型的对象(布尔值和元组)除非有特殊的比较逻辑,否则默认是不相等的,所以结果自然是False。

3. 为什么 True == (True) 结果是True?

这里要注意:(True)不是元组!括号在这里只是用来改变表达式的优先级,(True)等价于单独的True。所以这个表达式其实是:

True == True

两个相同的布尔值比较,结果当然是True。如果要和单元素元组比较,你得写成True == (True,)(注意逗号),这时候结果才会是False。

下次遇到这种看似诡异的表达式,先回忆下运算符优先级表,把表达式按优先级分组后再计算,就不会懵啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:42:45