Lección 7 de 16 · La pila de llamadas
Funciones y su marco
Ver que def no ejecuta el cuerpo, que cada llamada crea un marco y que las variables locales mueren al volver.
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
1def saludar(nombre): 2 mensaje = "Hola, " + nombre 3 return mensaje 4 5texto = saludar("Ana") 6print(texto)
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
1def saludar(nombre):2 mensaje = "Hola, " + nombre3 return mensaje4 5texto = saludar("Ana")6print(texto)
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: mensaje, nombre, print, saludar, texto. 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
def crea un objeto función. Al llamar saludar("Ana") se apila un marco nuevo donde vive el parámetro nombre. mensaje nace en ese marco y muere con él; el objeto texto sobrevive porque texto lo sigue apuntando.
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)