[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