6.10. 比较运算

与 C 不同,Python 中所有比较运算的优先级相同,低于任何算术、移位或位运算。 另一个与 C 不同之处在于 a < b < c 这样的表达式会按传统算术法则来解读:

  1. comparison ::= or_expr (comp_operator or_expr)*
  2. comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
  3. | "is" ["not"] | ["not"] "in"

比较运算将输出布尔值: TrueFalse

比较运算可以任意串连,例如 x < y <= z 等价于 x < y and y <= z,除了 y 只被求值一次(但在两种写法下当 x < y 值为假时 z 都不会被求值)。

正式的说法是这样:如果 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 不意味着在 ac 之间进行任何比较,因此,如 x < y > z 这样的写法是完全合法的(虽然也许不太好看)。