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

Python比较运算符疑问:print(bool(7>8)==False==True)为何返回False?

Python链式比较与运算符优先级问题解析

一、为什么bool(7>8)==False==True返回False?

你误以为这个表达式会按左结合先算(bool(7>8)==False)得到True,再算True==True得到True?其实Python的链式比较逻辑和普通左结合计算不一样。

在Python中,形如a op1 b op2 c的链式比较,等价于a op1 b and b op2 c,而非(a op1 b) op2 c。

放到你的例子里:
bool(7>8)的结果是False,原表达式变为False == False == True,实际等价于:

False == False and False == True

计算后:False == False是True,False == True是False,最后True and False的结果就是False,这就是输出为False的原因。

如果要按你预想的左结合逻辑计算,必须手动加括号:

print( (bool(7>8)==False) == True )

这个表达式才会返回True。

二、<、>、>=、<=与==、!=的优先级是否相同?

是的,<、>、>=、<=这些关系运算符,和==、!=这些相等运算符的优先级完全相同,并且它们都遵循左结合规则。但要注意,链式比较是Python的特殊语法,不是单纯的左结合计算——它会拆解成两个比较表达式用and连接,而且中间的操作数只会被计算一次。

内容的提问来源于stack exchange,提问作者Aman Raj Srivastva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:44:52