6

这个函数 f 接受一个参数列表并返回另一个具有相同参数列表的可调用对象,以便其他函数可以应用于它。

from operator import add, mul

def f(*a, **kw):
    return lambda g: g(*a, **kw)

map(f(3, 10), (add, mul))  # -> [13, 30]

你叫f什么?这是某种组合器吗?

4

2 回答 2

4

组合器是apply的咖喱形式。与(不推荐使用的)内置函数相比,颠倒参数的顺序以使其更有用,提供看起来像对偶的functools.partial函数。applyf

于 2011-11-08T15:48:23.793 回答
0

它与 密切相关partial,但又不相同。

partial接受一个函数和一些参数并返回一个可调用对象,该可调用对象使用组合参数调用给定的可调用对象。

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
于 2011-11-08T16:01:06.187 回答