3.11. Diagramas de pila

Para mantener el rastro de que variables pueden usarse y donde, a veces es útil dibujar un diagrama de pila. Como los diagramas de estado, los diagramas de pila muestran el valor de cada variable, pero también muestran la función a la que cada variable pertenece.

Cada función se representa por una caja con el nombre de la función junto a el. Los parámetros y variables que pertenecen a una función van dentro. Por ejemplo, el diagrama de stack para el programa anterior tiene este aspecto:

image

El orden de la pila muestra el flujo de ejecución. imprimeDoble fue llamado por catDoble y a catDoble lo invoco __main__ , que es un nombre especial de la función mas alta. Cuando crea una variable fuera de cualquier función, pertenece a main


En cada caso, el parámetro se refiere al mismo valor que el argumento correspondiente. Así que parte1 en catDoble tiene el mismo valor que cantus1 en main .

Si sucede un error durante la llamada a una función, Python imprime el nombre de la función y el nombre de la función que la llamo, y el nombre de la función que llamo a esa, y así hasta main .

Por ejemplo, si intentamos acceder a cat desde imprimeDoble, provocaremos un NameError:

   1: Traceback (innermost last):
   2: File "test.py", line 13, in 
   3: __main__
   4: catDoble(cantus1, cantus2)
   5: File "test.py", line 5, in 
   6: catDoble
   7: imprimeDoble(cat)
   8: File "test.py", line 9, in 
   9: imprimeDoble
  10: print cat
  11: NameError: cat

Esta lista de funciones de llama traceback (traza inversa). Le dice a usted en que archivo de programa sucedió el error, y en que línea, y que funciones se ejecutaban en ese momento. También muestra la línea de código que causo el error.


F³jese en la similaridad entre la traza inversa y el diagrama de pila. No es una coincidencia.

0