[Python-Dev] nested scopes confusion

Thomas Heller thomas.heller@ion-tof.com
Tue, 4 Dec 2001 20:47:59 +0100

From: "Thomas Heller" <thomas.heller@ion-tof.com>
> How do I achieve the desired effect? Note that the default argument
> trick (def mth(i=i): ...) does not work because *args is present.
Answering my own question (sorry), this works:

def functions():
    result = []
    for i in range(10):
        def make_function(index):
            def mth():
                return index
            return mth
        mth = make_function(i)
    i = 25
    return result

for mth in functions():
    print mth()

But how will I understand this 3 months from now?