2014-09-09 6 views
9

Питон документация для operator precedence состояний:Операторы сравнения Python цепочки/группировки слева направо?

Операторы в одной и той же поле группы слева направо (за исключением сравнений, включая тесты, которые все имеют одинаковый приоритет и цепи слева направо - смотри раздел Comparisons ...)

Что это значит? В частности:

  1. «Операторы в том же поле группы слева направо (для сравнения, за исключением ...)» - делать сравнения не группы слева направо?

  2. Если сравнения не группы слева направо, что они вместо этого делают? Они «цепочки», а не «группы»?

  3. Если сравнивать «цепочку», а не «группу», в чем разница между «цепочкой» и «группировкой»?

  4. Что было бы примерами, чтобы продемонстрировать, что операторы сравнения цепочки слева направо, а не справа налево?

ответ

12

Группировка (это то, что делают операторы без сравнения):

a + b + c means (a + b) + c 

Цепной (это то, что делают операторы сравнения):

a < b < c means (a < b) and (b < c) 

Группировка слева направо (это как вещи сгруппированы):

5 - 2 - 1 means (5 - 2) - 1 == 2 

, в отличие от группировки справа налево (это будет производить другой результат):

5 - (2 - 1) == 4 

(редактировать)

Chaining находится слева направо, так и в a < b < c, выражение a < b вычисляется до b < c и если a < b неверно, b < c не оценивается.

(2 < 1 < nonsense) дает значение False, потому что (1 < nonsense) никогда не оценивается.
(nonsense > 1 > 2) вызывает ошибку, пытаясь оценить (nonsense > 1)

https://en.wikipedia.org/wiki/Short-circuit_evaluation

+0

Спасибо @khelwood, это полезно!Это хороший пример, показывающий, как группировка слева направо отличается от справа налево. Я ищу аналогичный пример цепочки, чтобы показать, как цепочка слева направо отличается от справа налево. Если бы он был привязан справа налево, тогда было бы 'a

+0

Да, это мое понимание. См. Мое редактирование. – khelwood

+0

Ницца - спасибо @khelwood! –

0

Ну, хотя он работает, как вы говорите, и никто не может сделать ничего, чтобы изменить это, я думаю, что синтаксис смешения страшно, как это подразумевает и между каждыми двумя возможными парами, что-то, что никак не проявляется

Смежные вопросы