Where do nested functions live?
fredrik at pythonware.com
Sat Oct 28 09:59:29 CEST 2006
Steven D'Aprano wrote:
> I defined a nested function:
> def foo():
> def bar():
> return "bar"
> return "foo " + bar()
> which works. Knowing how Python loves namespaces, I thought I could do
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> AttributeError: 'function' object has no attribute 'bar'
> but it doesn't work as I expected.
> where do nested functions live?
in the local variable of an executing function, just like the variable
"bar" in the following function:
bar = "who am I? where do I live?"
(yes, an inner function is *created* every time you execute the outer
function. but it's created from prefabricated parts, so that's not a
very expensive process).
More information about the Python-list