创建带部分参数的Python函数
我想把一个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
传给它。
这样做感觉有点太聪明了,不太适合团队项目……有没有更简单或者更符合Python风格的方法呢?
谢谢!
2 个回答
2
你也可以用一个 lambda
函数来实现同样的效果:
inc2 = lambda y: add(2, y)
print inc2(3)
33
这被称为“柯里化”或者“部分应用”。你可以使用内置的 functools.partial() 函数。像下面这样的代码可以实现你想要的效果。
import functools
def add(x,y):
return x + y
inc2 = functools.partial(add, 2)
print inc2(3)