Securing a future for anonymous functions in Python

Steven Bethard steven.bethard at gmail.com
Fri Dec 31 05:14:31 CET 2004


Jeff Shannon wrote:
> My thesis here is that one of the most common (legitimate) uses of 
> lambda is as an adapter, to create an intermediary that allows a 
> callable with a given signature to be used in places where a different 
> signature is expected -- that is, altering the number or order of 
> arguments passed to a given callable (and possibly also capturing the 
> current value of some other variable in the process).  I feel that it's 
> more fruitful to focus on this "adapter" quality rather than focusing on 
> the "anonymous function" quality.

Maybe the 'functional' module proposed in PEP 309[1] could provide such 
functions?

py> def ignoreargs(func, nargs, *kwd_names):
...     def _(*args, **kwds):
...         args = args[nargs:]
...         kwds = dict((k, kwds[k])
...                     for k in kwds if k not in kwd_names)
...         return func(*args, **kwds)
...     return _
...
py> def f(x, y):
... 	print x, y
...
py> ignoreargs(f, 2)(1, 2, 3, 4)
3 4
py> ignoreargs(f, 2, 'a', 'b')(1, 2, 3, 4, a=35, b=64)
3 4

Steve

[1] http://python.fyxm.net/peps/pep-0309.html



More information about the Python-list mailing list