Les opérateurs de comparaison sont applicables à tous les
objets. Ils ont tous la même priorité (celle-ci est plus forte que
pour les opérateurs booléens). Les comparaisons peuvent être enchaînées
arbitrairement; par exemple x <y <= z est
équivalent à x < y and y <= z sauf que y
n'est évalué qu'une seule fois. (Dans les deux cas, z n'est pas évalué
si x < y se révèle faux.)
La table suivante résume les opérateurs de comparaison:
| Opérateur | Opération | Notes |
|---|---|---|
< | strictement inférieur à | |
<= | inférieur ou égal à | |
> | strictement supérieur à | |
>= | supérieur ou égal à | |
== | égal à | |
!= | n'est pas égal à | (1) |
<> | n'est pas égal à | (1) |
is | est la même instance que | |
is not | n'est pas la même instance que |
Notes:
<> et != sont deux symboles pour le même opérateur.
(GvR n'a pas tranché entre ABC et C! :-) ABC
ABC
!= est préférable, <> est obsolète.
Les objets de types différents ne peuvent pas être égaux, sauf dans le cas
de types numériques différents. En revanche,
ces objets sont ordonnés de manière cohérente mais arbitraire, de telle
sorte qu'un tri sur un tableau hétérogène donne un résultat cohérent.
De plus, certains types (comme les types de fichiers), ne supportent qu'une forme
dégénérée de comparaison, dans laquelle tous les objets de ce type sont différents.
Ces objets peuvent, dans ce cas aussi, être ordonnancés de manière arbitraire mais
cohérente.
Les instances d'une classe sont considérées comme différentes, sauf si
la méthode __cmp__()
est définie
dans cette classe. Cette méthode et ses effets sur la comparaison des objets
sont décrits plus précisément dans Python Reference Manual.
Note d'implémentation: Les objets de types différents, hormis les
types numériques, sont ordonnés par nom de type. Les objets de même type
pour lesquels la comparaison n'est pas applicable sont ordonnés en
utilisant leur adresse.
Pour les types séquences, il existe deux autres opérations avec la même
priorité syntaxique, ce sont
"in" et "not in" (voir plus loin).