您有以下代码:
def f(val):
return lambda x: x + val
assert f(5)(6) == 11
这可行,但是如何才能实现这个 n 阶呢?
assert f(5)(6)(7)...(n) == sum of values
我怎样才能做到这一点?
要创建一个可以以所需行为调用 n 次的可调用函数,您可以使用自定义可调用对象(具有 call 方法的类)。以下是实现这一目标的方法:
class NCallableFunc:
def __init__(self, func, val):
self.x = val
self.f = val
def __call__(self, x):
self.f = self.f(x)
return NCallableFunc(self.f)
def NFunc(self):
return self.f
def test(x):
return NCallableFunc(lambda y: x + y)
# Testing
result = test(5)(6)(7)(8)(9) # You can chain as many calls as you want
print(result.NFunc())