Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Duda con el espacio de memoria

Hola!

Viendo el video de "Variables" me quedó claro que independientemente como llamemos un objeto, si el objeto es el mismo, ocupará el mismo espacio de memoria. El caso puntual que vimos fue:

5
id(5)

edad = 5
id(edad)

numerocinco = 5
id(numerocinco)

Donde: id(5) = id(edad) = id(numerocinco). Ahora, mi duda es que cuando hacemos una reasignación de variable y cambiamos texto = " Micaela de los Sanyos " por texto = "MICAELA DE LOS SANTOS" y a su vez, tenemos una nueva variable nuevo_texto = "MICAELA DE LOS SANTOS", ¿Por qué id(texto) no es igual a id(nuevo_texto) si finalmente son el mismo objeto pero están ocupando dos espacios de memoria distintos?

Espero que mi duda sea clara :)

1 respuesta

¡Hola Lina!

Entiendo tu duda y es un concepto interesante de cómo Python maneja la memoria para los objetos. Cuando trabajamos con números como el 5 en tu ejemplo, Python optimiza el uso de memoria reutilizando el mismo espacio para valores inmutables y pequeños como los enteros pequeños, por lo que id(5), id(edad), y id(numerocinco) son iguales.

Sin embargo, cuando trabajamos con cadenas de texto (strings), la situación es un poco diferente. Las cadenas son también inmutables, pero cuando realizas una operación que modifica una cadena (como cambiar el texto a mayúsculas y eliminar espacios), Python crea una nueva cadena en un nuevo espacio de memoria en lugar de modificar la existente. Por eso, cuando reasignas texto a "MICAELA DE LOS SANTOS" y también tienes nuevo_texto con el mismo valor, aunque el contenido sea idéntico, son objetos diferentes en la memoria, y por eso sus id son distintos.

Aquí tienes un ejemplo práctico para ilustrar:

texto = " Micaela de los Sanyos "
texto = texto.strip().replace("Sanyos", "Santos").upper()

nuevo_texto = "MICAELA DE LOS SANTOS"

print(id(texto))  # Un id específico para 'texto'
print(id(nuevo_texto))  # Un id diferente para 'nuevo_texto'

Ambas variables contienen el mismo texto, pero como fueron creadas de manera independiente, ocupan diferentes espacios de memoria.

Espero que esta explicación te ayude a entender mejor cómo Python maneja las cadenas de texto y la memoria. ¡Espero haber ayudado y buenos estudios!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!