为何Python中False == False == True返回False?与带括号写法的差异
为什么Python中
False == False == True返回False? 这问题挺有意思的,咱们把两个表达式拆开来分析,就能明白差异在哪了:
1. 无括号的链式表达式False == False == True的逻辑
Python支持链式比较的语法,这种连续的比较会被自动拆解成用and连接的多个独立比较,而且中间的表达式只会被计算一次(这里都是布尔字面量,所以看不出来,但如果是变量或者复杂表达式就很关键)。
具体到这个例子,False == False == True等价于:
False == False and False == True
咱们一步步算:
- 先算
False == False,结果是True - 再算
False == True,结果是False - 最后
True and False的结果就是False,所以整个表达式返回False
2. 带括号的表达式(False == False) == True的逻辑
括号在Python里会改变运算的优先级,强制让括号内的表达式先执行:
- 先计算括号里的
False == False,得到True - 然后用这个结果和
True比较:True == True,结果就是True
两者的核心差异
- 无括号的链式比较是多个连续的两两比较,用
and连接,相当于a op1 b op2 c→a op1 b and b op2 c - 带括号的是嵌套比较,先算内层的比较结果,再用这个结果参与外层的比较,相当于
(a op1 b) op2 c→result op2 c
内容的提问来源于stack exchange,提问作者Weijianzhong
相关产品推荐
相关产品推荐

