使用部分参数创建Python函数

时间:2010-07-15 18:39:25

标签: python lambda

我希望将Python函数传递给另一个函数,并将其某些参数提前“填写”。

这简化了我正在做的事情:

def add(x, y):
    return x + y

def increment_factory(i):  # create a function that increments by i
    return (lambda y: add(i, y))

inc2 = increment_factory(2)

print inc2(3) # prints 5

我不想使用args的某种传递,然后使用*args将其展开,因为我传递inc2的函数不知道传递args 1}}到它。

对于小组项目来说,这感觉有点过于聪明......有没有更直接或更加狡猾的方式来做这件事?

谢谢!

1 个答案:

答案 0 :(得分:21)

这称为currying或部分应用。您可以使用内置的functools.partial()。像下面这样的东西会做你想要的。

import functools
def add(x,y):
    return x + y

inc2 = functools.partial(add, 2)
print inc2(3)