python如何解析“x是y是z”?

时间:2014-09-15 23:24:43

标签: python

python如何解析链式身份比较?

鉴于TrueFalseNone是python中的单例,我预计其中至少有一个会被评估为True:

>>> True is None is True
False
>>> True is None is False
False
>>> False is None is True
False
>>> False is None is False
False

但似乎python足够聪明地知道,如果x is y is z应该返回与id(x) == id(y) == id(z)相同的更好,而不是成对地评估和减少它们。这是正确的假设吗?

1 个答案:

答案 0 :(得分:3)

正确,the same

comparison: expr (comp_op expr)*
comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'

expr (comp_op expr)*应该用简单的英文阅读“由比较运算符分隔的任意数量的表达式”,其中is是一个。