Diferencias entre is y == Python



@eduardo_gpg

Número de visitas 1746

Tiempo de lectura 1 min

17 Enero 2021

En python, existen 2 formas muy comunes en las cuales podemos comparar objetos. Podemos hacerlo mediante el doble signo igual (==) o utilizando la palabra reservada is. 😎

En primera instancia podemos llegar a pensar que ambas no son más que sinónimos, sin embargo, si profundizamos más en detalle, esto no es así. Existe un gran diferencia entre ellas, y aprender a diferenciarlas y conocer exactamente cómo y cuando utilizarlas sin duda no salvará de muchos aprietos. Veamos.

Comencemos con un pequeño ejemplo.

>>> [1, 2, 3] == [1, 2, 3]
>>> True

Si comparamos 2 listas que almacenen exactamente los mismos valores y en el mismo orden, utilizando el doble operador igual (==) obtendremos como resultado True, indicando que ambos valores son lo mismo.

Pero, ¿Qué pasa si reemplazamos == por is? ¿El resultado acaso será el mismo?

>>> [1,2,3] is [1,2,3]
>>> False

No, ahora el resultado es False.

A diferencia del doble signo igual (==), donde se compara que 2 los valores sean los mismos, con la palabra reservada is se compararan que 2 objetos sean los mismo. Cosas completamente diferentes. 🤯

Espera ¿Qué acaso los valores no son los objetos? La respuesta es no.

Veamos otro pequeño ejemplo.

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]

Para este ejemplo hemos instanciado 2 objetos de tipo list (a y b), que si bien es cierto almacenan los mismos valores, son objetos diferentes, y podemos confirmarlo haciendo uso de la función id.

>>> id(a)
140377082809088

>>> id(b)
140377082809088

NOTA: El id de cada objeto no es más que un identificador único para nuestros sistema. Mediante el id podremos distinguir entre un objeto y otro.

Ahora, si comparamos los identificadores obtendremos como resultado False. Ya que ambos objetos no son los mismos.

>>> id(a) == id(b)
False

Por otro lado, si asignamos alias (una variable referencia a otra), los objetos serán los mismos.

>>> a = [1, 2, 3]
>>> b = a
>>> a is b
True

Si queremos negar usamos la palabra reservada not.

>>> b = a
>>> a is not b
False

Recuerda, en Python, a diferencia de otros lenguajes de programación, debes ver a las variables como etiquetas, y no como cajas dónde almacenar cosas. 🐍

Conclusión

Recordemos que el operador, doble signo igual (==) nos permite conocer si 2 valores son los mismos, a diferencia de la palabra reservada is, la cual nos permite conocer si 2 objetos son los mismos.


¿El contenido te resulto de ayuda?

Para poder dejar tu opinión es necesario ser un usuario autenticado. Login

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍