python如何解析链式身份比较?
鉴于True
,False
和None
是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)
相同的更好,而不是成对地评估和减少它们。这是正确的假设吗?
答案 0 :(得分:3)
正确,the same:
comparison: expr (comp_op expr)*
comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'
expr (comp_op expr)*
应该用简单的英文阅读“由比较运算符分隔的任意数量的表达式”,其中is
是一个。