Мой вопрос тесно связан с вопросом здесь:
Функция цепочки в 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
Кто-нибудь может указать, что здесь не так? Кроме того, как решить это? Большое спасибо за любую помощь!