On Sunday, 16 June 2019 at 01:36:38 UTC, Timon Gehr wrote:
It's a bug. It's memory corruption. Different objects with overlapping
 lifetimes use the same memory location.
Okay. Seen that way, it is clear to me why it's a bug.

...
No, it's not the same. Python has no sensible notion of variable scope.

>>> for i in range(3): pass
...
>>> print(i)
2

Yuck.

I got confused by this Python behavior:

ls = []
for i in range(0, 5):
   ls.append(lambda x: x + i)
for fun in ls:
   print(fun(0))

This prints:
4
4
4
4
4

Reply via email to