为什么“假是假的”是“真”呢?
为什么在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 False
expression式在原始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