[Python-Dev] Re: closure semantics
Guido van Rossum
guido at python.org
Fri Oct 24 17:32:22 EDT 2003
[Guido]
> > It gives outer scopes (some) control over inner scopes. One of the
> > guidelines is that a name defined in an inner scope should always
> > shadow the same name in an outer scope, to allow evolution of the
> > outer scope without affecting local details of inner scope. (IOW if
> > an inner function defines a local variable 'x', the outer scope
> > shouldn't be able to change that.)
[Alex]
> I must be missing something, because I don't understand the value
> of that guideline. I see outer and inner functions as tightly coupled
> anyway; it's not as if they could be developed independently -- not
> even lexically, surely not semantically.
It's the same as the reason why name lookup (whether at compile time
or at run-time) always goes from inner scope to outer. While you and
I see nested functions as small amounts of closely-knit code, some
people will go overboard and write functions of hundred lines long
containing dozens of inner functions, which may be categorized into
several functional groups. A decision to share a variable 'foo'
between one group of inner functions shouldn't mean that none of the
other inner functions can have a local variable 'foo'.
Anyway, I hope you'll have a look at my reasons for why the compiler
needs to know about rebinding variables in outer scopes from inside
an inner scope.
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list