Как python анализирует сопоставленное сопоставление идентичности?Как python анализирует «x is y is z»?
Учитывая, что True
, False
и None
одноэлементны в питоне я ожидал, по крайней мере один из них, чтобы оценить, как 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
Но, кажется, питон достаточно умен, чтобы знать, что, а не оценивать их парно и уменьшить, было бы лучше, если бы x is y is z
должен был возвращаться так же, как id(x) == id(y) == id(z)
. Это правильное предположение?
«а не оценивать их попарно и уменьшать» - я не уверен, что вы подразумеваете под этим, но почему вы думаете, что Python * не делает это? Это точно так же, как и любое другое прикованное сравнение. – user2357112
Учитывая, что 'x is y is z', похоже, возвращает true, если только если' x', 'y' и' z' являются одним и тем же объектом, это выглядит как довольно безопасная ставка. – murgatroid99
@ user2357112 Моя логика была такой: я не уверен, что она будет сочетаться с левой или с правой стороны, но одна из них (False is None) - False' или 'False is (None is False)' должна быть True. – wim