这些属于布尔运算,按优先级升序排列:
运算 | 结果: | 备注 |
| if x is false, then y, else x | (1) |
| if x is false, then x, else y | (2) |
| if x is false, then | (3) |
- 这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。
- 这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。
-
not
的优先级比非布尔运算符低,因此 not a == b
会被解读为 not (a == b)
而 a == not b
会引发语法错误。
比较运算
在 Python 中有八种比较运算符。 它们的优先级相同(比布尔运算的优先级高)。 比较运算可以任意串连;例如,此表格汇总了比较运算:x < y <= z
等价于 x < y and y <= z
y 只被求值一次(但在两种情况下当 x < y
z 都不会被求值)。
除不同的数字类型外,不同类型的对象不能进行相等比较。==
运算符总有定义,但对于某些对象类型(例如,类对象),它等于 is
。其他 <
、<=
、>
和 >=
运算符仅在有意义的地方定义。例如,当参与比较的参数之一为复数时,它们会抛出 TypeError
异常。