¿Qué significa id() en Python y cómo influye en tu código?

| Última modificación: 4 de diciembre de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

La función id() te ayuda a entender cómo se manejan los objetos tras bambalinas, con ellas puedes saber si dos variables realmente están apuntando al mismo lugar en la memoria o si solo son copias con el mismo valor. Veamos cómo trabajar con esta función y cómo implementarla.

id() en Python

¿Qué es id() en Python?

La función id() es una función incorporada en Python que devuelve un identificador único para un objeto durante su ciclo de vida. Este identificador es un número entero que, en la mayoría de las implementaciones de Python, corresponde a la dirección de memoria donde se almacena el objeto.

Entre las características de id() encontramos:

  1. Único por objeto: Cada objeto tiene su propio id único mientras exista en la memoria.
  2. No reutilizable: Una vez que un objeto se elimina, su id puede ser reutilizado por un nuevo objeto.
  3. Constante durante la vida del objeto: El id de un objeto no cambia mientras este exista.

La sintaxis para usar id() es así:

id(objeto)

Donde objeto es cualquier entidad válida de Python, como cadenas, números, listas, o incluso instancias de clases personalizadas.

¿Cómo influye id() en tu código?

Id() sirve principalmente para verificar si dos variables apuntan al mismo objeto en la memoria. Esto puede ser útil para:

  • Comparar objetos.
  • Optimizar recursos.
  • Depurar problemas relacionados con referencias.

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Veamos un ejemplo:

a = [1, 2, 3]
b = a
print(id(a)) # Devuelve el id de 'a'
print(id(b)) # Devuelve el mismo id, ya que 'b' apunta al mismo objeto

En este caso, ambas variables comparten el mismo id porque b es una referencia a a, no una copia.

¿En qué casos puedes hacer uso de id()?

Puedes usar esta función para:

  • Identificar referencias compartidas: En Python, puedes asignar una misma lista o diccionario a varias variables. Usar id() ayuda a verificar si realmente están compartiendo la misma referencia:
x = [10, 20]
y = x
print(id(x) == id(y)) # True, ambas apuntan al mismo objeto
  • Objetos inmutables: Para objetos inmutables como números y cadenas, Python puede optimizar el uso de memoria reutilizando ids para valores iguales:
a = "hola"
b = "hola"
print(id(a) == id(b)) # True, ambos objetos comparten el mismo id
  • Comparación de instancias personalizadas: Puedes usar id() para depurar cuándo diferentes instancias de una clase están ocupando diferentes espacios en memoria:
class Prueba:
pass

obj1 = Prueba()
obj2 = Prueba()
print(id(obj1) == id(obj2)) # False, son instancias distintas

¿Cómo se comporta id() con diferentes tipos de datos?

Id() funciona de manera diferente dependiendo del tipo de dato:

  • Con números y cadenas: Los números pequeños (entre -5 y 256) y las cadenas cortas suelen tener un id constante para optimizar la memoria:
x = 42
y = 42
print(id(x) == id(y)) # True, misma dirección de memoria
  • Con listas, diccionarios y conjuntos: Estos son objetos mutables, por lo que cada instancia tiene su propio id:
lista1 = [1, 2, 3]
lista2 = [1, 2, 3]
print(id(lista1) == id(lista2)) # False, son diferentes objetos
  • Con tuplas: Aunque las tuplas son inmutables, su id puede variar dependiendo de si sus elementos son compartidos.
t1 = (1, 2)
t2 = (1, 2)
print(id(t1) == id(t2)) # True en la mayoría de los casos

Si te interesó esta temática y quieres seguir aprendiendo sobre conceptos similares, no dudes en preguntar en Keepcoding por el bootcamp de programación para principiantes, en donde te brindaremos todas las bases teóricas y prácticas para que incursiones en un mercado laboral lleno de oportunidades. ¡Inscríbete ahora y recibe más información!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.