假设,我有一个功能
def func(u,v,w,x, alpha = 4, beta = 5):
print('u ',u)
print('v ',v)
print('x ',w)
print('u ',x)
print('** kwarqs: alpha ',alpha)
print('** kwarqs: beta ',beta)
return u*4 + v*3 + w*2 + x
我现在想通过使用functools.partial
使其成为部分功能。我将u,v,w
变量设置为常量,并创建函数$$ part = f(x)| _ {u,v,w = \ text {const}} $$
u = 2
v = 4
w = 5
part = partial(func,u,v,w, alpha = 'Hello 1', beta = 'Hello 2')
print(part(4))
结果是
u 2
v 4
w 5
x 4 # This is the remaining free variable
** kwarqs: alpha Hello 1
** kwarqs: beta Hello 2
34
如何创建函数
f(u) #or f(v),f(w)
f(v,x) #or all other variable combinations
f(v,alpha) # a combination of args and kwargs
?
最诚挚的问候
也欢迎您解决问题。
我可以为您的情况推荐使用lambda
。
f1 = lambda u : func(u,v,w,x, alpha = 4, beta = 5)
f2 = lambda v, x: func(u,v,w,x, alpha = 4, beta = 5)
f3 = lambda v, alpha: func(u,v,w,x, alpha = alpha, beta = 5)
用法与您想要的用法相同:
f1(u) #or f(v),f(w)
f2(v,x) #or all other variable combinations
f3(v,alpha) # a combination of args and kwargs