Hello group,
>>> lst=[]
>>> for i in range(10):
... lst.append(eval("lambda:%i" % i))
...
>>> lst[0]()
0
>>> lst[1]()
1
>>> lst[9]()
9
>>>
>>> lst=[]
>>> for i in range(10):
... exec "tmp = lambda:%i" % i # assignment is not expression
... lst.append(tmp)
...
>>> lst[0]()
0
>>> lst[1]()
1
>>> lst[9]()
9
>>>
and now the obvious one (as I thought at first)
>>> lst=[]
>>> for i in range(10):
... lst.append(lambda:i)
...
>>> lst[0]()
9
>>> i
9
>>>
I think I understand where the problem comes from
lambda:i seems not to be fully evalutated
it just binds object with name i and not the value of i
thus lst[0]() is not 0
are there other solutions to this problem
without use of eval or exec?
Regards, Daniel
--
http://mail.python.org/mailman/listinfo/python-list