Duplicar posible:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: diferencia entre `is` y` == `?
En Python, ¿cuál es la diferencia entre estas dos afirmaciones:
if x is "odp":
if x == "odp":
Duplicar posible:
Python ‘==’ vs ‘is’ comparing strings, ‘is’ fails sometimes, why?Python: diferencia entre `is` y` == `?
En Python, ¿cuál es la diferencia entre estas dos afirmaciones:
if x is "odp":
if x == "odp":
Las pruebas ==
operador de igualdad
Los is
pruebas de palabras clave para la identidad del objeto; si estamos hablando del mismo objeto. Tenga en cuenta que múltiples variables pueden referirse al mismo objeto.
El operador is
compara la identidad, mientras que el operador ==
compara el valor. Esencialmente x is y
es lo mismo que id(x) == id(y)
Ver here
Los operadores es y no es prueba de la identidad del objeto: x es y es verdadero si y sólo si x e y son el mismo objeto. X no es Y produce el valor de verdad inversa
Por razones de implementación, "ODP" es un mal ejemplo, pero no se debe utilizar es menos que desee la posibilidad de dos cadenas idénticas para evaluar false:
>>> lorem1 = "lorem ipsum dolor sit amet"
>>> lorem2 = " ".join(["lorem", "ipsum", "dolor", "sit", "amet"])
>>> lorem1 == lorem2
True
>>> lorem1 is lorem2
False
Como han dicho otros, es pruebas de identidad, no de igualdad. En este caso, tengo dos cadenas separadas con los mismos contenidos. Sin embargo , no debe depender de esto, ya sea:
>>> odp1 = "odp"
>>> odp2 = "".join(["o", "d", "p"])
>>> odp1 == odp2
True
>>> odp1 is odp2
True
En otras palabras, usted debe Nunca uso es para comparar cadenas.
P.S. En Python 2.7.10 >>> odp1 is odp2
devuelve False.
dupe http://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why – SilentGhost
@SilentGhost No estoy de acuerdo. La pregunta vinculada contiene la respuesta a esta pregunta, pero para cualquiera que busque una respuesta relativamente simple a la pregunta que se hace aquí, la pregunta vinculada no parecerá lo mismo. –
@David: y ya se preguntó simple (bastante recientemente), puedes gastar * tu * tiempo para encontrar dónde está, las preguntas que tienen las mismas respuestas están duplicadas en mi libro. – SilentGhost