parameters to lambda's executed at run time.
Boris Borcic
bborcic at gmail.com
Tue May 6 06:43:12 EDT 2008
One way :
>>> from functools import partial
>>> def func(item) : print item
>>> llist = [partial(func,item) for item in range(5)]
>>> for thing in llist : thing()
0
1
2
3
4
wyleu wrote:
> I'm trying to supply parameters to a function that is called at a
> later time as in the code below:
>
> llist = []
>
> for item in range(5):
> llist.append(lambda: func(item))
>
> def func(item):
> print item
>
> for thing in llist:
> thing()
>
> which produces the result
>
> IDLE 1.2.1
>>>> ================================ RESTART ================================
>>>>
> <function <lambda> at 0xb716356c>
> <function <lambda> at 0xb71635a4>
> <function <lambda> at 0xb71635dc>
> <function <lambda> at 0xb7163614>
> <function <lambda> at 0xb716364c>
>>>> ================================ RESTART ================================
>>>>
> 4
> 4
> 4
> 4
> 4
>
> How can one allocate a different parameter to each instance of the
> function rather than all of them getting the final value of the loop?
>
More information about the Python-list
mailing list