有人能为我解释一下吗?
>>> None is None is None
True
>>> (None is None) is None
False
'is' 运算符不是接受 2 个操作数,从左侧比较对象,然后返回布尔值吗?
因为它被解释为链式比较 https://docs.python.org/3/reference/expressions.html#comparisons:
comparison ::= or_expr ( comp_operator or_expr )*
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"
比较可以任意链接,例如,x < y <= z
是等价的
到x < y and y <= z
,除了 y 仅计算一次(但在两个
当情况 z 根本不被评估x < y
发现是假的)。
正式来说,如果a, b, c, …, y, z
是表达式和op1, op2, …, opN
是
比较运算符,那么a op1 b op2 c ... y opN z
相当于a op1 b and b op2 c and ... y opN z
,除了每个表达式是
最多评估一次。
因此,自从is
是一个比较运算符,您的第一个表达式相当于:
None is None and None is None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)