Comparison operations are supported by all objects. They all have the same priority (which is higher than that of the Boolean operations). Comparisons can be chained arbitrarily; for example, x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).
This table summarizes the comparison operations:
< strictly less than
<= less than or equal
> strictly greater than
>= greater than or equal
!= not equal (1)
is object identity
is not negated object identity
4.2. Boolean Operations — and, or, not¶
These are the Boolean operations, ordered by ascending priority:
Operation Result Notes
x or y if x is false, then y, else x (1)
x and y if x is false, then x, else y (2)
not x if x is false, then True, else False (3)
1.This is a short-circuit operator, so it only evaluates the second argument if the first one is False.
2.This is a short-circuit operator, so it only evaluates the second argument if the first one is True.
3.not has a lower priority than non-Boolean operators, so not a == b is interpreted as not (a == b), and a == not b is a syntax error.