приоритет операторов сравнения в Python против C / C ++ - PullRequest
5 голосов
/ 10 января 2012

В C / C ++ операторы сравнения, такие как < >, имеют более высокий приоритет, чем ==, верно?

Таким образом, в C / C ++ код оценивается как true или 1:

if(3<4 == 2<3) {  //3<4 == 2<3 will evaluate to true, right?
    ...
}

Но в Python это кажется неправильным:

3<4 == 2<3  #this will evaluate to False in Python.

Вопрос

В Python каждый оператор сравнения имеет одинаковый приоритет?

Ответы [ 2 ]

5 голосов
/ 10 января 2012

В Python операторы сравнения не только имеют одинаковый приоритет, они обрабатываются специально (они скорее цепочки, чем группы). Из документации :

Формально, если a, b, c, ..., y, z являются выражениями и op1, op2, ..., opN являются операторами сравнения, тогда a op1 b op2 c ... y opN z эквивалентно a op1 b and b op2 c and ... and y opN z, за исключением того, что каждое выражение вычисляется не более одного раза.

В вашем случае выражение

3<4 == 2<3

эквивалентно

3 < 4 and 4 == 2 and 2 < 3

что составляет False из-за второго предложения.

3 голосов
/ 10 января 2012

Краткий ответ: да, все сравнения имеют одинаковый приоритет

Длинный ответ: вы можете посмотреть документацию: Приоритет на Python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...