Special keyword argument lambda syntax

MRAB google at mrabarnett.plus.com
Fri Mar 13 13:32:45 EDT 2009


Hrvoje Niksic wrote:
> MRAB <google at mrabarnett.plus.com> writes:
> 
>>>>> sorted(range(9), def key(n): n % 3)
>> [0, 3, 6, 1, 4, 7, 2, 5, 8]
> 
> Given the recent pattern of syntactic constructs for expressions using
> <expr> <keyword> <expr> (ternary if, listcomps, genexps), and avoiding
> the use of colon in expressions, maybe it should be:
> 
> sorted(range(9), key=n % 3 def key(n))
> 
> this is analogous to
> 
> sorted(range(9), foo=n % 3 if bla(n))
> 
> It also shares the property that it reuses an existing keyword and
> avoids the word "lambda", originally (I presume) an homage to Church,
> now considered obscure-sounding by many.
> 
If you want to avoid the colon then:

 >>> sorted(range(9), def key(n)=n % 3)
[0, 3, 6, 1, 4, 7, 2, 5, 8]

which would be syntactic sugar for:

 >>> sorted(range(9), key=lambda n: n % 3)



More information about the Python-list mailing list