Diferencia entre ‘is’ y ‘==’ en Python

Cuando se empieza en Python es bastante frecuente usar como sinónimos los comparadores is y ==. Aunque, en general, suelen funcionar de forma similar sus comportamientos no son exactamente iguales.

is devolverá True si las dos variables apuntan al mismo objeto.

== devolverá True si los valores de las variables son iguales.

Para acabar de entenderlo veamos algunos ejemplos:

// creamos una lista
>>> a = [1, 2 , 3, ]

// la referenciamos en otra variable
>>> b = a

// ¿Se refieren ambas variables al mismo objeto?
>>> b is a
True

// ¿Son iguales?
>>> b == a
True

// Ahora vamos a generar una copia de la lista
>>> b = a[:]

// ¿Se refieren al mismo objeto?
>>> b is a
False

// ¿Son iguales?
>>> b == a
True

Creo que este ejemplo es muy descriptivo pero veamos unos ejemplos más complejos:

// si creamos 2 listas iguales...
// ¿Son el mismo objeto?
>>> [1,2] is [1,2]
False

// En Python todo son objetos entonces, ¿por qué este comportamiento?
>>> 2 is 2
True
// Esto sucede porque Python pone los pequeños enteros en caché.

// ¿Y si creamos 2 enteros más grandes?
>>> 1000 is 1000
True

// Pero en cambio: 
>>> 1000 is 999 + 1
False

Lo mismo es aplicable a los caracteres y cadenas:

>>> "a" is "a"
True

>>> "aa" is "a" * 2
True

// En cambio...
>>> a = "a"
>>> "aa" is a*2
False

Como véis no es difícil de entender pero hay que ser muy cuidadoso. Aunque ambos son útiles, is hace que nuestro código sea muy legible pero puede resultar muy engañoso. ¡Extremad las precauciones!

Publicado por AlvaroLab

Enamorado de la gastronomía en todas sus facetas: la cocina, sus ingredientes, la agricultura, la nutrición y los restaurantes; diferentes países, culturas, tradiciones y costumbres.

Dejar un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: