[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)
        result.append(mth)
    i = 25
    return result

for mth in functions():
    print mth()

But how will I understand this 3 months from now?

Thomas