这个组合器有名字吗?

时间:2011-11-08 15:35:58

标签: python function combinators

这个函数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?这是某种组合器吗?

2 个答案:

答案 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