[Dev] Python dynamic vs lexical scoping
jeremy at alum.mit.edu
Mon Nov 18 05:46:10 PST 2002
>>>>> "DM" == David McCusker <david at osafoundation.org> writes:
DM> Aha, that's very interesting, since it means the explanation
DM> found in http://www.hetland.org/python/instant-python.php is
DM> completely wrong when it says the problem is dynamic instead of
DM> lexical scoping.
I hadn't followed the link until now. (I doesn't take much prompting
to get me to talk about scoping in Python :-). It appears the author
is confused by the special way the top-level namespace is handled (in
almost every lexically scoped language).
DM> Basically, the variables were not free a definition time, but
DM> they became free later because no closure was created to
DM> preserve the bindings from the time a nested function was
DM> created. I'm not sure it's valid to say a language has lexical
DM> scoping when it does this with nested functions, but I suppose
DM> it doesn't really matter.
No, it doesn't really matter. Lexical scoping without nesting means
that a function's globals are determined statically rather than
dynamically. If globals were determined dynamically, you'd pick up
bindings from the module that called the function rather than the
module that defined the function.
More information about the Dev