https://foro.gambas-es.org/viewtopic.php?f=14&t=3464
-----------------------------------
Shell
Viernes, 08 Noviembre 2013, 13:50

[Python] Diferencia Entre == E Is
-----------------------------------
Hola!.

Pues es algo que estaba buscando y comentaba, cuando encontré el proyecto libro.
Por cierto muy interesante la nueva versión del libro "Como piensa un informático"..que
lo veo que el titulo original es: "How to Think Like a Computer Scientist"..

Osea, el científico de computadoras = informático. De ahí la traducción.

Aquí el libro:

http://openbookproject.net/thinkcs/python/english3e/

Y aquí el tema del que os hablaba en el mensaje:

http://auraham.wordpress.com/2012/08/15/python-cs-diferencia-entre-los-operadores-e-is/

Me entretengo con todo...pong..pong..

Saludos


-----------------------------------
jguardon
Viernes, 08 Noviembre 2013, 14:27

Re: [Python] Diferencia Entre == E Is
-----------------------------------
Creía que ibas a hablar de lo que pones en el titulo y resulta que no tiene nada que ver.

Te dispersas con mucha facilidad, shell. Debes centrarte un poco más, te lo digo desde el aprecio. ;-)

Saludos


-----------------------------------
Shell
Sabado, 09 Noviembre 2013, 11:28

Re: [Python] Diferencia Entre == E Is
-----------------------------------
Cierto, me distraigo a la primera de cambio... :( 
Debe ser que quiero abarcarlo todo. Mucha información en poco tiempo.

Iba a ir directo por el tema del mensaje, pero cuando me quise dar cuenta,
estaba remirando el libro.

Al final,  en el ultimo enlace hace referencia al tema. Aun así,  por mas que he seguido buscando,
no encontré mas información. En la mayoría de las paginas que encontraba sobre Python y tutoriales
oficiales, cuando trataban el tema de las condicionales, is o not is lo pasaban por alto.  :o 

Para mi eso de "is" es algo nuevo que no estoy acostumbrado en Basic.

Saludos


-----------------------------------
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


-----------------------------------
Shell
Domingo, 10 Noviembre 2013, 11:44

Re: [Python] Diferencia Entre == E Is
-----------------------------------
Gracias.

Es parecido a lo que explica el segundo enlace.
Ahora mismo no le encuentro uso. Quizás cuando use POO.

Me surgió la duda del ultimo mini proyecto. Pong.
No le encontré a la instrucción un uso para este.

Saludos


