6 Сравнение цепей

Вы можете сравнить несколько элементов с несколькими операторами сравнения с помощью цепочки сравнения. Например

 x > y > z

 

это просто краткая форма:

 x > y and y > z

 

Это позволит оценить, True , только если оба сравнения True .

Общая форма

 a OP b OP c OP d ...

 

Где OP представляет один из нескольких операций сравнения , которые можно использовать, а буквы представляют собой произвольные действительные выражения.

Заметим , что 0 != 1 != 0 имеет значение True , даже если 0 != 0 является False . В отличии от общих математических обозначений , в которых x != y != z означает , что x , y и z имеет разные значения. Цепная == операции имеет естественный смысл в большинстве случаев, так как равенство , как правило , транзитивно.

Стиль

Нет теоретического ограничения на количество элементов и операций сравнения, если вы используете правильный синтаксис:

 1 > -1 < 2 > 0.5 < 100 != 24

 

Вышеприведенные возвращает True , если каждое сравнение возвращает True . Тем не менее, использование замысловатой цепочки не очень хороший стиль. Хорошая цепочка будет «направленной», не более сложной, чем

 1 > x > -4 > y != 8

 

Побочные эффекты

Как только одно сравнение возвращает значение False , выражение сразу вычисляет значение False , пропуская все остальные сравнения.

Отметим , что выражение exp в a > exp > b будет оцениваться только один раз, в то время как в случае

 a > exp and exp > b

 

exp будет вычисляться дважды , если a > exp верно.