Sommario:
Da utilizzare isquando si desidera verificare l' identità di un oggetto (ad es. Verificare se lo varè None). Da utilizzare ==quando si desidera verificare l' uguaglianza (ad es. È varuguale a 3?).
Spiegazione:
Puoi avere classi personalizzate in cui my_var == NonetorneràTrue
per esempio:
class Negator(object):
def __eq__(self,other):
return not other
thing = Negator()
print thing == None
print thing is None
isverifica l' identità dell'oggetto . C'è solo 1 oggetto None, quindi quando lo fai my_var is None, stai controllando se sono effettivamente lo stesso oggetto (non solo oggetti equivalenti )
In altre parole, ==è un controllo dell'equivalenza (che è definito da oggetto a oggetto) mentre iscontrolla l'identità dell'oggetto:
lst = [1,2,3]
lst == lst[:]
lst is lst[:]
is- python.org/dev/peps/pep-0008/#programming-recommendations