Re: [Python] Diferencia Entre == E Is
En
gambas también existe "IS" que comprueba si un objeto es una instancia de otro objeto o uno de sus descendientes. O lo que es lo mismo, si un objeto es del mismo tipo que otro. Es en cierto modo una comprobación de identidad.
Se puede usar a la inversa usando el operador de negación "Not"
En Python, no es exactamente lo mismo, pero la mejor forma de entenderlo es precisamente como una comparación de identidad, más que de valor.
Aunque muchas veces el resultado es el mismo usando 'is' o '==', éste último realmente compara los valores de los objetos, mientras que el anterior compara si las entidades son iguales.
El uso depende muchas veces del contexto, pero generalmente se usa '==' y sólo se usa 'is' cuando se trabaja con clases o estructuras de datos mutables.
Un ejemplo de cómo en ciertos casos no es igual usar uno u otro:
mi_nombre = "jesus"
tu_nombre = "suso"
print mi_nombre[2:]
# imprime 'sus'
print tu_nombre[:3]
# imprime también 'sus'
# por lo tanto:
mi_nombre[2:] == tu_nombre[:3]
# retorna verdadero... pero
mi_nombre[2:] is tu_nombre[:3]
# retorna falso!!
Hay una ligera diferencia entre ambos métodos de comparación, en la que 'is' implica cierta identidad en los objetos que se comparan.
Por cierto, el equivalente de IS (en
gambas) en Python es "isinstance".
Saludos