Using map you always end up using lambda functions to pass constant arguments to the mapping function like this:
map( lambda x,y=K: f(x,y), L )
This can now done by writing instead: map(lambda x: f(x, K), L) or if you don't want the lambda, you can use a list comprehension: [f(x, K) for x in L]
What I propose in this patch is to have map recognize its keyword arguments like this:
map( f, L , y=K )
The result would be: def map( f, L, **kw ): # accepts only one list for simplicity l=[] for i in L: l.append( f(i,**kw) ) return l
While it doesn't solve every problem (passing a value to the first arg) it could help remove many uses of lambda functions.
While your patch scores high in minimal changes to the implementation, I don't like the resulting notation. While map(f, L) is reasonably natural, map(f, L, y=K) is not. Also, most C functions don't accept keyword arguments, so this won't help as much in the case where there's a speed reason for avoiding lambdas and list comprehensions. --Guido van Rossum (home page: http://www.python.org/~guido/)