Something is rotten in Denmark...

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Tue May 31 06:48:39 EDT 2011


Am 31.05.2011 12:08 schrieb Jussi Piitulainen:

> The same sharing-an-i thing happens here:
>
>>>> fs = []
>>>> for i in range(4):
> ...    fs.append(lambda n : i + n)
> ...
>>>> fs[0](0)
> 3
>
> And the different private-j thing happens here:
>
>>>> gs = []
>>>> for i in range(4):
> ...    gs.append((lambda j : lambda n : j + n)(i))
> ...
>>>> gs[0](0)
> 0

There is a simpler way: with

 >>>> fs = []
 >>>> for i in range(4):
 > ...    fs.append(lambda n, i=i: i + n)
 > ...

you give each lambda a different default argument.

 >>>> fs[0](0)
 > 0


Thomas



More information about the Python-list mailing list