Something is rotten in Denmark...
Jussi Piitulainen
jpiitula at ling.helsinki.fi
Tue May 31 08:15:21 EDT 2011
Thomas Rachel writes:
> 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
I know, and harrismh777 knows. I find it an unnecessary distraction
when explaining why the different closures in the initial example
behave identically, but I did discuss it at the end of my post.
More information about the Python-list
mailing list