Dziś rano znalazłem się pisać coś takiego:Jakie są zasady dotyczące łańcuchowym z „==” i w Pythonie
if (a == b == c):
# do something
i był zaskoczony, że dał mi oczekiwanego rezultatu.
myślałem, że zachowują się jak:
if ((a == b) == c):
# do something
Ale to oczywiście nie. Wydaje się, że Python traktuje pierwsze zdanie inaczej niż drugie, co jest miłe, ale nie mogłem znaleźć żadnej dokumentacji ani wyjaśnienia na ten temat.
Przetestowałem i dostał to:
In [1]: 2 == 2 == 2
Out[1]: True
In [2]: (2 == 2) == 2
Out[2]: False
Czy ktoś chętny do mnie wyjaśnić, jakie są zasady dotyczące takich "łańcuchowym" z ==
(lub !=
)?
Dziękuję bardzo.
Formalnie, jeśli a, b, c, ..., y, z są wyrażeniami, a op1, op2, ..., opN są operatorami porównania, to op1 b op2 c ... y opN z jest równoważne op1 b i b op2 c oraz ... y opN z, z tym że każde wyrażenie jest oceniane najwyżej raz. @ http://docs.python.org/reference/expressions.html – georg
Czysty, co nie? Możesz także wykonać 'a Thomas
Nie chodzi o to, że bardzo mnie to obchodzi, ale czy osoba sprowadzająca może wyjaśnić, dlaczego przegłosował? – ereOn