【发布时间】:2020-03-29 14:31:45
【问题描述】:
假设,我有一个函数
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
?
最好的问候
也欢迎变通方法。
【问题讨论】:
-
基本上你想重载函数?
-
@schwobaseggl - 谢谢,我想知道过去 8 年是否发生了一些变化
-
@albusSimba 第三个想要的函数似乎是重载。部分函数是否也被认为是重载函数?
-
不,它没有。无论您的偏函数采用什么参数,都必须是 kwargs 或传递给偏函数的最后一个位置参数。