https://foro.gambas-es.org/viewtopic.php?f=14&t=3464&p=19448#p19448
-----------------------------------
jguardon
Sabado, 09 Noviembre 2013, 15:10

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.

[code linenumbers=false syntax=gambas]Return "gambas" is String

' devuelve True[/code]

Se puede usar a la inversa usando el operador de negación "Not"

[code linenumbers=false syntax=gambas]Return "gambas" is Not String

' devuelve False[/code]

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:

[code linenumbers=false syntax=python]
mi_nombre = "jesus"
tu_nombre = "suso"

print mi_nombre[2:]
# imprime 'sus'
print tu_nombre[]
# imprime también 'sus'

# por lo tanto:
mi_nombre[2:] == tu_nombre[]
# retorna verdadero... pero

mi_nombre[2:] is tu_nombre[]
# retorna falso!![/code]

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


