我无法理解python在以下情况下返回False
背后的逻辑:
3 > 5 in range(10)
返回True
时:
False in range(10)
答案 0 :(得分:5)
虽然@jonrsharpe的评论是正确答案,但对我来说并不是微不足道的,也许对你来说也是如此,所以我将其分解:
表达式的评估如下:
3 > 5 in range(10)
3 > 5 and 5 in range(10)
False and 5 in range(10) == False
(False and ...
short circuits至False
) 1 -> 2
解释了x < y < z
的原因。总而言之,x < y
表示y < z
和 (3 > 5) in range(10)
。
尝试类似(3 > 5) in range(10)
的内容将按如下方式进行评估:
False in range(10)
0 in range(10)
True
3 -> 4
0
的原因是range(0,10)
位于0 in range(10)
内,表达式True
被评估为布尔结果(即False
或{{ 1}})取决于左侧(0
)是否确实在右侧(range(0,10)
)