L' ==
equivalenza del valore di prova dell'operatore. L' is
operatore verifica l'identità dell'oggetto, Python verifica se i due sono realmente lo stesso oggetto (ovvero vivono allo stesso indirizzo in memoria).
>>> a = 'banana'
>>> b = 'banana'
>>> a is b
True
In questo esempio, Python ha creato solo un oggetto stringa, ed entrambi a
e b
fa riferimento ad esso. Il motivo è che Python memorizza internamente nella cache e riutilizza alcune stringhe come ottimizzazione, in realtà c'è solo una stringa "banana" in memoria, condivisa da aeb; Per attivare il comportamento normale, è necessario utilizzare stringhe più lunghe:
>>> a = 'a longer banana'
>>> b = 'a longer banana'
>>> a == b, a is b
(True, False)
Quando si creano due elenchi, si ottengono due oggetti:
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
In questo caso diremmo che le due liste sono equivalenti, perché hanno gli stessi elementi, ma non identici, perché non sono lo stesso oggetto. Se due oggetti sono identici, sono anche equivalenti, ma se sono equivalenti, non sono necessariamente identici.
Se si a
riferisce a un oggetto e si assegna b = a
, quindi entrambe le variabili si riferiscono allo stesso oggetto:
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True