[Python-3000] Sky pie: a "var" keyword

Mike Krell mbk.lists at gmail.com
Wed Oct 11 00:31:08 CEST 2006


> > Yes, but part of the reason for this may be this very wart.  I know
> > I'm campaigning for this as a fix for what the OP calls the "read only
> > lexical scoping gotcha".  A fix for that makes it much more convienent
> > to write closures that modify closed-over values, which in turn makes
> > a much more compelling use case for using nested functions.
>
> Every use that does not involve shadowing variables can be handled with
> a list indexing variant.

Yes, I know.  Which is exactly why I described this change as a
convenience.  Just like programming in Python instead of machine
language is a convenience.  It's merely a matter of degree.

>  Is it ugly and a bit slower?  Maybe.  But no
> one who really wants to use nested functions is (in my opinion) hurt by
> Python's lack of the equivalent of 'outer' or the variant 'my'.

All conveniences come at a cost; the operative question is whether the
benefit outweighs the cost.  For both the reason I cited above and the
reasons you mention below, I think the answer is yes.  Reasonable
people can obviously disagree on this one.

> > In any event, as you pointed out yourself, at last check Guido is +1
> > on this general idea.  Maybe you should ask him why he's in favor of
> > it :-)
>
> I'm only guessing here, but I would say it is because it removes a
> (small) wart with regards to nested scopes, and it gets people to stop
> complaining about this little thing (nevermind the functional
> programming people who have been crying that Python ruins functional
> programming for not having this included with the language).

Yeah, I'm tired of people spreading the FUD that Python doesn't have
proper closures.  It does; they're just inconvenient to use.
Hopefully Python 3000 will address this :-)

   Mike


More information about the Python-3000 mailing list