为什么“假是假的”是“真”呢?
为什么在Python中这样评估:
>>> False is False is False True
但是当用括号试图performance如预期的时候:
>>> (False is False) is False False
链接操作符如a is b is c等于a is b and b is c 。
所以第一个例子是False is False and False is False ,它的计算结果是True and True ,计算结果为True
括号会导致一个评估的结果与下一个variables进行比较(如你所期望的那样),所以(a is b) is c比较a is b和c 。
引用Python官方文档 ,
forms上,如果
a,b,c,…,y,z是expression式,op1,op2,…,opN是比较运算符,则a op1 b op2 c ... y opN z相当于a op1 b and b op2 c and ... y opN z,除了每个expression式最多被评估一次。
所以, False is False is False评为
(False is False) and (False is False)
第二个False is Falseexpression式在原始expression式中使用第二个False ,可以有效地转化为
True and True
这就是为什么第一个expression式是True 。
但在第二个expression式中,评估顺序如下。
(False is False) is False
其实是
True is False
这就是为什么结果是False 。
你的表情
False is False is False
被视为
(False is False) and (False is False)
所以你明白了
True and True
并评估为True 。
您也可以使用这种链接与其他操作员。
1 < x < 10
我认为False is False is False意思(False is False) and (False is False) ,但是(False is False) is False意思是:
>>> (False is False) is False False >>> a_true = (False is False) >>> a_true True >>> a_true is False False
所以,你会得到结果。
>>> False is False is False True
在这种情况下,每个False对都被评估。 评估前两个False,如果为True ,则评估第二个和第三个False并返回结果。
在这种情况下, False is False is False ,相当于2个命令的结果, False is False