Andromeda
Note

Call Stack (Python)

Definition

A data structure (LIFO - Last In, First Out) used by the Python interpreter to keep track of function calls and where to return after a function completes.

Why It Matters

The call stack is the ‘short-term memory’ of a program; understanding how it manages function calls and variables is the only way to debug recursion errors, stack overflows, and complex execution flows in modern software.

Core Concepts

  • Frame Objects: Each time a function is called, Python creates a “frame object” on the stack containing the function’s local variables and the line number to return to.
  • Stack Push/Pop: Calling a function “pushes” a frame onto the stack; returning “pops” it off.
  • Tracebacks: When a program crashes, Python prints the call stack (the “Traceback”), showing the path of execution that led to the error.
  • Memory Constraint: Deeply nested or recursive functions can lead to a “Stack Overflow” if the stack grows too large for memory.
def a():
    print("Starting a()")
    b()
    print("Finishing a()")

def b():
    print("Starting b()")
    c()
    print("Finishing b()")

def c():
    print("Inside c()")

a()
# Execution path: a calls b, b calls c.
# Stack Pushes: a, then b, then c.
# Stack Pops: c finishes, then b finishes, then a finishes.

Connected Concepts