Le operazioni di confronto vengono supportate da tutti gli oggetti.
Hanno tutte la stessa priorità (che è più alta di quella delle
operazioni booleane). Il confronto può essere concatenato
arbitrariamente; per esempio, x < y <= z
è
equivalente a x < y e y <= z
, eccetto
che y viene valutato solo una volta (ma in entrambi i casi z
non viene valutato affatto quando x < y
è falso.
Questa tabella ricapitola le operazioni di confronto:
Operazione | Significato | Note |
---|---|---|
< |
minore | |
<= |
minore o uguale | |
> |
maggiore | |
>= |
maggiore o uguale | |
== |
uguale | |
!= |
diverso | (1) |
<> |
diverso | (1) |
is |
identità dell'oggetto | |
is not |
negazione dell'identità dell'oggetto |
Note:
<>
e !=
sono ortografie alternative per lo stesso
operatore.
!=
è l'ortografia preferita; <>
è obsoleta.
Oggetti di tipi differenti, con le eccezioni di differenti tipi numerici
e differenti tipi stringa, non risultano mai utilizzabili nel confronto
di uguaglianza; questi oggetti vengono ordinati coerentemente e non invece
in modo arbitrario (in modo tale che l'ordinamento di un array
eterogeneo fornisca un risultato coerente).
Inoltre, alcuni tipi (per esempio i file oggetto) supportano soltanto
una nozione degenere del confronto, ove ognuno dei due oggetti di
quel tipo sia diseguale. Tali oggetti vengono ordinati arbitrariamente,
e non invece in modo coerente.
Gli operatori <
, <=
, >
e >=
, solleveranno
un'eccezione TypeError ogni volta che uno degli operandi
risulti un numero complesso.
Le istanze di una classe normalmente si confrontano come non uguali, a meno che la classe non definisca il metodo __cmp__(). Vedete il Manuale di riferimento di Python per informazioni sull'uso di questo metodo ed i suoi effetti sul confronto tra oggetti.
Nota implementativa: Gli oggetti di differenti tipi, con l'eccezione dei numeri, vengono ordinati per il loro nome del tipo; gli oggetti dello stesso tipo che non supportano la proprietà di confronto vengono ordinati per il loro indirizzo.
Altre due operazioni con la stessa priorità sintattica, "in" e "not in", vengono supportate solo dai tipi sequenza (vedete sotto).
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.