В отличие от C, все операции сравнения в Python имеют одинаковый приоритет, который ниже, чем у любой арифметической, сдвигающей или побитовой операции.Кроме того, в отличие от C, выражения типа a < b < c
имеют интерпретацию, общепринятую в математике:
comparison ::= or_expr (comp_operator or_expr)*
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"
Сравнения дают логические значения: True
или False
.
Сравнения могут быть связаныпроизвольно, например, x < y <= z
эквивалентно x < y and y <= z
, за исключением того, что y
оценивается только один раз (но в обоих случаях z
вообще не оценивается, когда x < y
оказывается ложным).
Формально, если a , b , c , … , y , z являются выражениями и op1 , op2 , … , opN являются операторами сравнения, тогда a op1 b op2 c ... y opN z
эквивалентно a op1 b and b op2 c and ... y opN z
за исключением того, что каждое выражение оценивается не более одного раза.
Обратите внимание, что a op1 b op2 c
не подразумевает какого-либо сравнения между a
и c
, так что, например, x < y > z
идеальнодопустимо (хотя, возможно, не красиво).