Special keyword argument lambda syntax

Scott David Daniels Scott.Daniels at Acm.Org
Fri Mar 13 17:39:16 CET 2009


Rhodri James wrote:
> On Fri, 13 Mar 2009 14:49:17 -0000, Beni Cherniavsky 
> <beni.cherniavsky at gmail.com> wrote:
>> ...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.

The original proposal was initially appealing to me until I saw this
comment.  That means a relatively "invisible typo" would turn into good
syntax.  Possibley this is exactly what Rhodri James is talking about,
but just to be explicit, one of these is probably a mistake:
        somefun(something, key(x)==5)
        somefun(something, key(x)=5)
Right now a syntax error makes you look there, after your extension,
only test cases will show these problems.

--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list