先来看两条python语句:
print(1 < (2 == 2))
print(1 < 2 == 2)
先不要看答案,自己想一下这两天语句的执行结果会是什么呢?
一般的思路:
第一条语句中,先计算 2 == 2 ,结果是 True ,再计算 1 < True ,结果应该是 False 。
第二条语句中,先计算 1 < 2 , 结果是 True ,再计算 True == 2 ,结果应该是 False 。
公布答案:
我们发现第一个结果和我们预期的一样,但是第二个不一样。难道python里True的值为2?
并非如此!
python有链式比较的机制,也就是对这种 a < b < c 比较方式的计算跟C、Java等语言有所不同。它并非以 (a < b) < c 的方式计算,而是等价于 a < b and b < c 。
现在再来看我们的第二条语句,可以将它等价为 1 < 2 and 2 == 2 ,两个比较都为真,它们的与当然也为真啦!
有了链式比较,我们就可以更加清晰又简洁地写出判断条件了。
最后赋上查询的文档地址:点击打开链接
以下是文档主要内容:
Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).