Assignment in parent scope w/nested_scopes

Jeff Epler jepler at inetnebr.com
Thu May 3 18:28:49 EDT 2001


Is there some way, like "global" makes a name reside in the global scope,
to make a name reside in the parent scope, so that code like
    >>> def f(initial = None):
    ...     x = initial
    ...     def getter(): return x
    ...     def setter(y):
    ...        # magic statement here to make x refer to f.x
    ...        x=y
    ...     return (getter, setter)
will work?  i.e.,
    >>> g, s = f()
    >>> g(0)
    0
    >>> s(1)
    >>> g()
    1

I realize that this can be done with classes, but I'd like to see it done
with nested scopes.

By the way, 'x = [initial]' is a cute trick but also not quite what I'm
looking for.

Jeff



More information about the Python-list mailing list