6.10. 比较运算
与 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
只被求值一次(但在两种写法下当 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
不意味着在 a 和 c 之间进行任何比较,因此,如 x < y > z
这样的写法是完全合法的(虽然也许不太好看)。