6.8 Nested functions
You can define a function inside another function. We say that the inner function is nested inside the outer.
def f(x, y):
w = 10
def g(z):
return z**3 + w
return g(x + y)
f(2, 3)
135
The nested function g on line 3 can see
and use w outside its definition but within f.
You cannot call a nested function by name outside its enclosing function.
g(3)
NameError: name 'g' is not defined
To avoid confusion, do not use a parameter name for a nested function that you also use for
the containing function. You cannot return from a nested function
all the way out of the function in which you defined it. You may code this behavior using an
exception via try and except.
You may define more than one nested function, and a nested function may contain additional function definitions within it.
Exercise 6.8
Consider...