How to bind arguments to given values in Python functions?
本问题已经有最佳答案,请猛点这里访问。
我有许多具有位置和关键字参数组合的函数,我想将它们的一个参数绑定到给定值(仅在函数定义之后才知道)。 有一般的方法吗?
我的第一次尝试是:
1 2 3 4 5 | 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) |
但是,为此,我需要知道传递给
1 2 3 4 5 6 7 | >>> 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的
正如MattH的回答所暗示的,
但是,您的问题可以理解为"我该如何实现
1 2 3 4 | def partial(f, *args, **kwargs): def wrapped(*args2, **kwargs2): return f(*args, *args2, **kwargs, **kwargs2) return wrapped |
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from functools import partial, update_wrapper def f(a, b, c): print(a, b, c) bound_f = update_wrapper(partial(f, 1000), f) # This will print 'f' print(bound_f.__name__) # This will print 1000, 4, 5 bound_f(4, 5) |