I am trying to dynamically create functions in the following way:
a = []
for i in range(2):
a.append(lambda: i)
print(a[0](), a[1]())
The results surprised me at first: 1 1
.
My expectations were that 0 1
would be printed since the first function was created with i = 0
and the second one with i = 1
. Then I realized that i
is a global variable, thus the result.
My questions are:
- Is there a way to create functions dynamically so that they would print
0 1
? - Is there something I misinterpret in the code?
Thank you in advance!