[Python-ideas] Tweaking closures and lexical scoping to include the function being defined

Jim Jewett jimjjewett at gmail.com
Fri Sep 30 16:27:36 CEST 2011


me:
>> I don't *like*
>> boxing up my variables, but it still seems less offensive than a
>> global statement and the resulting side effects.

On Thu, Sep 29, 2011 at 4:26 PM, Devin Jeanpierre
<jeanpierreda at gmail.com> asked:

> How is that?

Normally, things at the module level can only be modified by other
lines at the module level, or by monkey-patching.  The global
statement changes that.


    >>> x=5   # Safe ... no other assignments on the far left ...
    >>> class T:
                x=4    # OK, so there is a class level variable
                def __init__(self):
                    global x    # which, alas, isn't what gets used
                    x=3

		
    >>> x
    5
    >>> T()
    <__main__.T object at 0x0137A270>
    >>> x
    3

Wait -- how did x get changed?  *I* didn't change it, did I?

-jJ



More information about the Python-ideas mailing list