我希望将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}}到它。
对于小组项目来说,这感觉有点过于聪明......有没有更直接或更加狡猾的方式来做这件事?
谢谢!
答案 0 :(得分:21)
这称为currying或部分应用。您可以使用内置的functools.partial()。像下面这样的东西会做你想要的。
import functools
def add(x,y):
return x + y
inc2 = functools.partial(add, 2)
print inc2(3)