如何将参数绑定到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的partial
function。
正如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