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

Python 3.6.2中为何11 > 0 is True的结果为False?

为什么11 > 0 is True在Python中返回False?

嘿,这个问题其实是Python里链式比较和运算符优先级的经典小陷阱,我来给你拆解明白~

核心原因:Python的链式比较规则

在Python中,多个比较运算符(比如>、<、is、==这类)是支持链式书写的,它们会被自动拆解成用逻辑与and连接的多个独立比较,而不是我们直觉里的“先算左边表达式,再和右边的值比较”。

具体到11 > 0 is True,Python会把它解析成:

(11 > 0) and (0 is True)

分步计算验证

我们一步步拆解计算:

  • 第一步:11 > 0的结果是True
  • 第二步:0 is True的结果是False(因为True是int的子类,值为1,但is比较的是对象身份,0和True是完全不同的对象)
  • 第三步:True and False的结果自然是False

对比你的其他例子

  • 0 is True直接返回False,这和上面第二步的结果完全一致
  • 11 > False返回True,是因为Python中False等价于整数0,这个表达式实际等价于11 > 0,结果自然为True

如何得到直觉上的结果?

如果想让表达式先计算11 > 0,再和True做身份比较,只需要加上括号改变运算优先级:

(11 > 0) is True  # 结果为True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:31:32