正如某些人所评论的那样,Python比较可以被链接起来。为了便于说明,链接的时候,Python的实际与运算表达式。这样做的理由是,像a < b < c这样的表达式具有数学上的常规解释。因此,您的特定表达的混乱None is None is None,其中identy运营商都参与其中。因此,基本上,这将转换为:(None is None) and (None is None)这显然是 True这是Python文档中的另一个示例更多的信息特别是由于这是一个面试问题,因此需要特别注意的是,这并不是所有语言之间都普遍存在的行为。正如我链接的文档中所述,与C不同,Python中的所有比较运算都具有相同的优先级,该优先级低于任何算术,移位或按位运算。因此,让我们考虑一下10 > x > 2表达式(因为is运算符在C中无效)。C的翻译(由于运算符优先级)((10 > x) > 2)Python的翻译(10 > x) and (x > 2)
is是一个比较运算符,如docs所示:comparison ::= or_expr ( comp_operator or_expr )*comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!=" | "is" ["not"] | ["not"] "in"因此,就像其他比较运算符一样,它可以任意链接。所以a = b = c = Nonea is b is c相当于(a is b) and (b is c)