Python 3.6.2控制台:
>>> 11 > 0 is True
False
但是
>>> 0 is True
False
>>> 11 > False
True
那么,为什么11 > 0 is True
是False
?
答案 0 :(得分:4)
这是comparison chaining的示例,因为>
和is
都是比较运算符。
比较可以任意链接,例如,
x < y <= z
是等效的 至x < y and y <= z
,但y
仅评估一次(但两者都有) 如果发现z
为false,则根本不评估案例x < y
。正式,如果
a, b, c, …, y, z
是表达式,op1, op2, …, opN
是。a op1 b op2 c ... y opN z
比较运算符,然后a op1 b and b op2 c and ... y opN z
相当于>>> (11 > 0) and (0 is True) False
,除了每个表达式都是 最多评估一次。
因此,它相当于:
{{1}}