[Python-Dev] Lexical scoping in Python 3k
Josiah Carlson
jcarlson at uci.edu
Sat Jul 1 11:01:12 CEST 2006
Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
>
> Josiah Carlson wrote:
>
> > What I asked before, and what I'd like to ask again, is if there are any
> > _nontrivial uses_ of lexically nested scopes which are made cumbersome
> > by our inability to write to parent scopes.
>
> The trouble with taking that position is that the very
> cases which would benefit are very *simple* ones, where
> it would be cumbersome to refactor it to use a class,
> or mutable object in the outer scope, etc. So you've
> effectively set up your acceptance criteria to be
> unmeetable.
If the only code that benefits from such changes are "very *simple*",
then I think that says something about its necessity. That is, if
anything more complicated than those that are "very *simple*" generally
don't benefit, then I don't believe that such a modification would be
beneficial to the language overall. Further, a simple namespace factory
can handle much of the current issues, without needing to create or
change keywords.
def namespace(**kwds):
class namespace(object):
__slots__ = kwds.keys()
def __init__(self):
for i,j in kwds.iteritems():
setattr(self, i,j)
return namespace()
def trivial_counter(start):
ns = namespace(current=start-1)
def next():
ns.current += 1
return ns.current
return next
Maybe a variant of the above namespace factory should make it into the
collections module.
> > If there aren't, then I'm
> > going to again have to argue against new syntax, keywords, and their use.
>
> There's one very simple way we could do this in Py3k
> without requiring any new syntax or keywords: just
> redefine the meaning of "global" to mean "not local".
I would probably be a solid -0 on such a proposal; I still don't think
it's really necessary, but I've never used (or really seen) global more
than one level deep, so would guess its impact would be low.
- Josiah
More information about the Python-Dev
mailing list