Python上的高阶函数

Python上的高阶函数,python,higher-order-functions,Python,Higher Order Functions,我得到了一个函数列表,并被要求使用add1和重复定义plus(x,y)plus是一个接受两个数字并返回总数的函数。但是,我无法使用我的定义获得任何输出。它只给出函数的名称。感谢您的帮助 add1 = lambda x: x + 1 def compose(f, g): return lambda x: f(g(x)) def repeated(f, n): if n == 0: return lambda x: x else: return c

我得到了一个函数列表,并被要求使用
add1
重复定义
plus(x,y)
plus
是一个接受两个数字并返回总数的函数。但是,我无法使用我的定义获得任何输出。它只给出函数的名称。感谢您的帮助

add1 = lambda x: x + 1

def compose(f, g):
return lambda x: f(g(x))

def repeated(f, n):
    if n == 0:
        return lambda x: x
    else:
        return compose(f, repeated(f, n - 1)) 

def plus(x, y):
    return repeated(add1, y)

这是一种有趣的加法方法。它运行得很好,你只是错过了一件事
Repeated
返回一个函数,该函数将给出求和,而不是求和本身。因此,您只需像这样在
x
上调用
repeated(add1,y)

def plus(x, y):
    return repeated(add1, y)(x)

代码的其余部分工作正常。

详细说明是
plus
返回一个函数,这就是为什么您看到的是函数名而不是数值。我想这就是为什么在
plus
中有
x
参数的原因。只需将这行代码更改为

return repeated(add1, y)(x)
这将使用x中的值评估重复的
返回函数

所以使用

plus(5,1)


>6

您能演示一下如何使用这些函数吗?在
plus
中,您在哪里使用
x
?测试用例是带任意两个整数的plus(),plus(1,3),plus(2,5)等。