2.3.3 Comparisons
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 |
|
== |
equal |
|
!= |
not equal |
(1) |
<> |
not equal |
(1) |
is |
object identity |
|
is not |
negated object identity |
|
Notes:
- (1)
<> and != are alternate spellings for the same operator.
!= is the preferred spelling; <> is obsolescent.
Objects of different types, except different numeric types and different string types,
never compare equal; such objects are ordered consistently but arbitrarily (so that sorting a
heterogeneous array yields a consistent result). Furthermore, some types (for example, file
objects) support only a degenerate notion of comparison where any two objects of that type are
unequal. Again, such objects are ordered arbitrarily but consistently. The <, <=,
> and >= operators will raise a TypeError
exception when any operand is a complex number.
Instances of a class normally compare as non-equal unless the class
defines the __cmp__() method. Refer to the Python Reference Manual
for information on the use of this method to effect object comparisons.
Implementation note: Objects of different types except numbers are ordered by their
type names; objects of the same types that don't support proper comparison are ordered by
their address.
Two more operations with the same syntactic priority, "in"
and "not in"
, are supported only by sequence types (below).
|