Special keyword argument lambda syntax
MRAB
google at mrabarnett.plus.com
Fri Mar 13 11:33:26 EDT 2009
Rhodri James wrote:
> On Fri, 13 Mar 2009 14:49:17 -0000, Beni Cherniavsky
> <beni.cherniavsky at gmail.com> wrote:
>
>> Specification
>> =============
>>
>> Allow keyword arguments in function call to take this form:
>>
>> NAME ( ARGUMENTS ) = EXPRESSION
>>
>> which is equivallent to the following:
>>
>> NAME = lambda ARGUMENTS: EXPRESSION
>>
>> except that NAME is also assigned as the function's `__name__`.
>
> My first instinct on seeing the example was that "key(n)" was a function
> *call*, not a function definition, and to remember the thread a month or
> two ago about assigning to the result of a function call. I'm inclined
> to think this would add confusion rather than remove it.
>
Guido wants to keep the syntax LL(1), so you're not the only one who has
a problem with it! :-)
I think that:
def NAME ( ARGUMENTS ): EXPRESSION
is still LL(1).
For example:
>>> sorted(range(9), def key(n): n % 3)
[0, 3, 6, 1, 4, 7, 2, 5, 8]
More information about the Python-list
mailing list