[Python-Dev] nested scopes confusion
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