我的问题与这里的问题密切相关: Function chaining in Python ,这是CodeWars上的“链添加函数”问题。 链接中有许多有用的解决方案,但我只想找出我自己的解决方案有什么问题。你知道吗
我想到的第一件事就是用咖喱
def add(a):
def add2(b):
return b + a
return add2
add(1)(2)
将给我3
作为输出。你知道吗
现在我想添加递归,这样add(1)
、add(1)(2)(3)
和add(1)(2)(3)(4)
等也可以按预期工作:
def add(a):
if not callable(a):
return a
else:
def add2(b):
return b + add(a)
return add2
这次add(1)
按预期返回1
,但add(1)(2)
、add(1)(2)(3)
等给出了错误:
TypeError: 'int' object is not callable
有人能指出这里出了什么问题吗?再者,如何解决?非常感谢你的帮助!你知道吗
@MSeifert是对的,实际上应该是重复的,但正如你所能做的:
现在:
或一行:
或另一行:
每一个输出:
当您用
add(1)
调用它时,a
就是1
(因此不可调用),它将返回1
。下一步:您将有1(2)
,但由于1
不是可调用的,因此失败。你知道吗你不能,因为你需要知道什么时候结束递归,但是你只知道在你完成当前步骤之后,你是否需要更深一层。所以不幸的是,你选择的方法将不起作用,你必须寻找一个不同的方法。那就是你的link to the question about function chaining comes in.
相关问题 更多 >
编程相关推荐