如何将参数绑定到Python函数中的给定值?

我有一些函数结合了位置和关键字的参数,我想将它们的一个参数绑定到一个给定的值(只有在函数定义之后才知道)。 有没有一个通用的方法呢?

我的第一个尝试是:

def f(a,b,c): print a,b,c def _bind(f, a): return lambda b,c: f(a,b,c) bound_f = bind(f, 1) 

然而,为此我需要知道传递给f的确切参数,并且不能使用单个函数来绑定我感兴趣的所有函数(因为它们具有不同的参数列表)。

 >>> from functools import partial >>> def f(a, b, c): ... print a, b, c ... >>> bound_f = partial(f, 1) >>> bound_f(2, 3) 1 2 3 

你可能需要functools的partialfunction。

正如MattH的回答所build议的那样, functools.partial就是要走的路。

但是,您的问题可以被解读为“我怎样才能实现partial ”。 你的代码缺less的是使用*args**kwargs – 2这样的用途,实际上:

 def partial(f, *args, **kwargs): def wrapped(*args2, **kwargs2): return f(*args, *args2, **kwargs, **kwargs2) return wrapped