[Python-Dev] nested scopes confusion (original) (raw)

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


I would have expected the following code to print 1, 2, ..., 9. Instead it prints 25, 25, 25, .. 25.

def functions(): result = [] for i in range(10): def mth(*args): return i result.append(mth) i = 25 return result

for mth in functions(): print mth()

Reading PEP227, I can (barely) understand why it behaves this way.

How do I achieve the desired effect? Note that the default argument trick (def mth(i=i): ...) does not work because *args is present.

Thomas