这个函数f接受一个参数列表,并返回另一个具有相同参数列表的callable,以便可以对其应用其他函数。
from operator import add, mul
def f(*a, **kw):
return lambda g: g(*a, **kw)
map(f(3, 10), (add, mul)) # -> [13, 30]
你怎么称呼f
?这是某种组合器吗?
答案 0 :(得分:4)
组合子是curried形式的apply。与(已弃用的)内置函数apply
相比,f
将参数的顺序颠倒为更有用,为functools.partial函数提供看似双重的函数。
答案 1 :(得分:0)
它与partial
密切相关,但不相同。
partial
接受一个函数和一些参数,并返回一个callable,它使用组合参数调用给定的callable。
def pr(x): print (x) # making it fit for 2.x and 3.x
p = functools.partial(pr, 1, 2, 3)
p() # prints 1, 2, 3
q = f(1, 2, 3)
p(pr) # prints 1, 2, 3