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