[Python-Dev] 2.5 and beyond

Giovanni Bajo rasky at develer.com
Sat Jul 1 02:01:00 CEST 2006


Tim Peters <tim.peters at gmail.com> wrote:

>> ...
>> Incidentally, I think that lexical scoping would also deal with the
>> problem
>> that people often encounter in which they have to write things like
>> "lambda
>> x=x:" where one would think "lambda x:" would suffice.
>
> They _shouldn't_ encounter that at all anymore.  For example,
>
>>>> def f(x):
> ...     return lambda: x+1
>>>> f(3)()
> 4
>
> works fine in modern Pythons.

Yes but:

>>> a = []
>>> for i in range(10):
...     a.append(lambda: i)
...
>>> print [x() for x in a]
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

This subtle semantic of lambda is quite confusing, and still forces people to
use the "i=i" trick.

Giovanni Bajo



More information about the Python-Dev mailing list