CRITERIO

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.

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16

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)
Cuando Python ejecuta la línea 1 (def), ¿qué pasa?

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

programa.pyrecién ejecutadasiguiente
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.

¿Existe la variable mensaje después de la línea 5?
¿Por qué el texto 'Hola, Ana' sigue en memoria después del return?

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)