In message <[EMAIL PROTECTED]>, Duncan Booth wrote:
> We already get people asking why code like this doesn't return 3:
>
>>>> fns = [ lambda: x for x in range(10) ]
>>>> fns[3]()
> 9
>
> ... making this change to default arguments would mean the
> solution usually proposed to the function scoping question above would no
> longer work:
>
>>>> fns = [ lambda y=x: y for x in range(10) ]
>>>> fns[3]()
> 3
The right solution, of course, is
fns = [(lambda x : lambda : x)(x) for x in range(10)]
--
http://mail.python.org/mailman/listinfo/python-list