Сегодня утром, я считаю себя писать что-то вроде:Каковы правила, касающиеся цепное «==» и в Python
if (a == b == c):
# do something
И был удивлен, что он дал мне ожидаемый результат.
Я думал, что это будет вести себя, как:
if ((a == b) == c):
# do something
Но это явно не так. Кажется, что Python рассматривает первое утверждение иначе, чем второе, что приятно, но я не мог найти никакой документации или объяснений по этому поводу.
Я проверил и получил это:
In [1]: 2 == 2 == 2
Out[1]: True
In [2]: (2 == 2) == 2
Out[2]: False
ли кто-то уход объяснить мне, что правила, касающиеся такой «цепочки» из ==
(или !=
)?
спасибо.
Формально, если a, b, c, ..., y, z являются выражениями и op1, op2, ..., opN являются операторами сравнения, то op1 b op2 c ... y opN z эквивалентно a op1 b и b op2 c и ... y opN z, за исключением того, что каждое выражение оценивается не более одного раза. @ http://docs.python.org/reference/expressions.html – georg
Аккуратно, а? Вы также можете сделать 'a Thomas
Не то, чтобы мне было очень много, но может ли downvoter объяснить, почему он отказался? – ereOn