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)等。