Ваша оригинальная идея будет работать, если вы вместо этого вызовете эти функции и затем добавите их возвращаемые значения, вместо того, чтобы пытаться добавить их сами;
def addFuncs(f,g,x):
f(x) + g(x)
Это потому, что f и g на самом деле LambdaTypes , и оператор () вызывает их, позволяя оператору + добавлять свои возвращаемые значения.Когда вы используете оператор + непосредственно на них, оператор + не знает, как добавить два типа Lambda.
РЕДАКТИРОВАТЬ Чтобы добавить немного больше;Причина, по которой
def addFunctions(f, g):
def getf():
return f
def getg():
return g
return getf() + getg()
не работает, заключается в том, что вы снова пытаетесь сложить вместе два функциональных объекта.Тем не менее, ваш пример
def addFunctions(f, g):
return f
БУДЕТ работать, потому что это просто вернет другой объект-функцию, который затем вызывается с аргументом значения 10 в вашем выражении
addFuncs(add1,square)(10)