Lección 3 de 16 · Inmutabilidad de los números
Reasignar no es modificar
Ver que y = x comparte el objeto, y que x = x + 1 crea un objeto nuevo sin tocar el anterior.
Metodología · Comprensión
PRIMM: predecir, ejecutar, investigar, modificar, crear
Predice la salida, ejecuta y busca en la memoria la línea exacta donde x e y se separan.
Metodología · Comprensión
Fracaso productivo
Antes de ver la memoria, escribe tu propia explicación de por qué y vale 5. Luego compárala.
t<0 Antes de ejecutar
Lee el código y comprométete con una predicción
Mientras tanto, Python ya hizo su parte de t<0: leyó y compiló el archivo completo. Ninguna variable existe todavía.
programa.py
1x = 5 2y = x 3x = x + 1 4print(x, y)
t=0 t>0 Ejecución paso a paso
Qué se ejecuta primero y dónde vive cada variable
Avanza con Siguiente paso o las flechas del teclado. Pasa el mouse por una variable para ver a qué objeto apunta.
t=-1
Antes de ejecutar
Python lee y compila el archivo
1x = 52y = x3x = x + 14print(x, y)
Salida
(vacía)
Qué pasó
- Antes de ejecutar nada, Python lee el archivo completo y lo compila a bytecode: instrucciones que su máquina virtual entiende.
- Si hubiera un error de sintaxis, el programa fallaría aquí, sin ejecutar ni una sola línea.
- Nombres que aparecen en el código: print, x, y. Ninguno existe todavía en memoria.
Pila de marcos · dónde viven los nombres
Todavía no hay marcos: ninguna variable existe.
Montón · dónde viven los objetos
Ningún objeto todavía.
Idea clave
y = x no copia el 5: hace que y apunte al mismo objeto. x + 1 crea un objeto nuevo (6) y x pasa a apuntar a él. El 5 no cambió porque los int son inmutables, así que y sigue viendo 5.
t>0 Después: repaso sin mirar
Recupera de memoria
Responde sin volver al paso a paso. Para dominar la lección necesitas 2 de 2.
Explícalo con tus palabras (Feynman)
Dominio de la lección
Aún no
- Falta la predicción (t<0)
- Repaso: 0 de 2 (se necesitan 2)