Eventuali duplicati:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: Differenza tra `is` e` == `?
In Python, qual è la differenza tra queste due affermazioni:
if x is "odp":
if x == "odp":
Eventuali duplicati:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: Differenza tra `is` e` == `?
In Python, qual è la differenza tra queste due affermazioni:
if x is "odp":
if x == "odp":
Le prove ==
operatore di uguaglianza
Le prove is
parole-chiave per l'identità oggetto; se stiamo parlando dello stesso oggetto. Si noti che più variabili possono fare riferimento allo stesso oggetto.
L'operatore is
confronta l'identità mentre l'operatore ==
confronta il valore. Essenzialmente x is y
è uguale id(x) == id(y)
Vedi here
Gli operatori è e non è test per l'identità di un oggetto: x è y è vero se e solo se x ed y sono lo stesso oggetto. x non è y cede il valore inversa verità
Per ragioni di implementazione, "ODP" è un cattivo esempio, ma non si dovrebbe usare è se non si desidera la possibilità di due stringhe identiche per valutare a false:
>>> lorem1 = "lorem ipsum dolor sit amet"
>>> lorem2 = " ".join(["lorem", "ipsum", "dolor", "sit", "amet"])
>>> lorem1 == lorem2
True
>>> lorem1 is lorem2
False
Come altri hanno già detto, è l'identità dei test, non l'uguaglianza. In questo caso, ho due stringhe separate con lo stesso contenuto. Tuttavia, non si deve dipendere da questa operazione:
>>> odp1 = "odp"
>>> odp2 = "".join(["o", "d", "p"])
>>> odp1 == odp2
True
>>> odp1 is odp2
True
In altre parole, si dovrebbe mai uso è quello di confrontare le stringhe.
P.S. In Python 2.7.10 >>> odp1 is odp2
restituisce False.
dupe http://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why – SilentGhost
@SilentGhost Non sono d'accordo. La domanda collegata contiene la risposta a questa domanda, ma a chiunque inciampi cercando una risposta relativamente semplice alla domanda posta qui, la domanda collegata non sembrerà affatto la stessa. –
@David: e già è stato chiesto molto (anche di recente), sei libero di spendere * il tuo * tempo per trovare dov'è, le domande che hanno le stesse risposte sono duplicate nel mio libro. – SilentGhost