创建带部分参数的Python函数

16 投票
2 回答
8285 浏览
提问于 2025-04-16 01:21

我想把一个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)

撰写回答