如何制作一个像这样调用的部分函数:function(func , arg1((arg2(。以及您为什么/如何能够做到这一点。
f(x)(y).
x = (func , arg1)
y = (arg2)
我以为我尝试使用装饰器来传递参数。例如,我可以调用包装器,当我调用 adder(5( 时它可以工作。
def partial(arg):
def add(func):
def wrapper(x):
return arg + func(x)
return wrapper
return add
@partial(1)
def adder(z):
return z
adder(4)
a = adder(4)
partial(a, 4)(5) /////////
###///////////////////////////////another format ///////////
def decorator(func , x):
def wrapper(y):
return func(y) + x
return wrapper
def adder(z):
return z
adder = decorator(adder , 2)
#########I can call the wrapper, but I get a local error when I call a partial function.
可以调用包装器,但是当我调用部分函数时出现本地错误。
我希望能够使用偏函数获得两个或多个数字的总和。
如果您不想使用functools.partial
请尝试例如 lambda 函数adder = lambda x: lambda y: x+y
或
def adder(x):
def g(y):
return x+y
return g
这应该可以完成这项工作。
您提到要使用分部函数获取几个参数的总和,请尝试:
def adder(*summands):
def h(*more_summands):
return sum(list(summands)+list(more_summands))
return h
如果你想实现参数对任意函数的部分应用f
这里是你可以做的
partial = lambda f, *args1, **kwargs1: lambda *args2, **kwargs2:
f(*args1,*args2, **kwargs1, **kwargs2)