使用带有多个参数的functools部分

问题描述 投票:0回答:1

假设,我有一个功能

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

最诚挚的问候


也欢迎您解决问题。

python partial functools
1个回答
-2
投票

我可以为您的情况推荐使用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
© www.soinside.com 2019 - 2024. All rights reserved.