[Python-Dev] Re: Dynamic nested scopes
Guido van Rossum
guido@python.org
Thu, 02 Nov 2000 01:07:04 -0500
[Barry, on dynamic scopes]
> This is how Emacs Lisp behaves, and it's used all the time in ELisp
> programs. On the one hand it's quite convenient for customizing the
> behavior of functions. On the other hand, it can make documenting the
> interface of functions quite difficult because all those dynamically
> scoped variables are now part of the function's API.
>
> It's interesting to note that many ELispers really hate dynamic
> scoping and pine for a move toward lexical scoping. I'm not one of
> them.
I don't care what you pine for in ELisp, but for Python this would be
a bad idea.
> I'm not as concerned about "fixing" nested functions because I hardly
> ever use them, and rarely see them much in Python code. Fixing
> lambdas would be nice, but since Guido considers lambdas themselves a
> mistake, and given that lamda use /can/ be a performance hit in some
> situations, does it make sense to change something as fundamental as
> Python's scoping rules to fix this eddy of the language?
I referred to this in our group meeting as "fixing lambda" because
that's where others seem to need it most often. But it is a real
problem that exists for all nested functions. So let me rephrase
that: "fixing nested function definitions" is useful, if it can be
done without leaking memory, without breaking too much existing code,
and without slowing down code that doesn't use the feature.
--Guido van Rossum (home page: http://www.python.org/~guido/)