[英]"unsupported operand type(s) for ** or pow() : ' function' and 'int' "
[英]unsupported operand type(s) for ** or pow(): 'function' and 'int'
这是我的代码,您能告诉我打印时导致错误的原因吗? 函数组成应该计算函数组成。
def compose(lst):
return acc(g, h, lst)
print(compose([lambda x:x**2,lambda y:2*y])(5))
def acc(f, v, lst):
if len(lst)==0:
return v
if len(lst)==1:
return f(v,lst[0])
return f(lst[0], acc(f,v,lst[1:]))
def h(f):
return f
def g(f1,f2):
return f1(f2)
您需要创建一个函数g
,该函数实际使用参数调用f2
:
def g(f1, f2):
def func(*args, **kwargs):
return f1(f2(*args, **kwargs))
return func
print(compose([lambda x: x**2, lambda y: 2*y])(5))
输出:
100
这等效于:
>>> (lambda x: x**2)((lambda y: 2*y)(5))
100
在最后一行f1(f2)
,给f1
的参数是f2
(一个lambda),而不是int 5。
您需要做类似lst[0](lst[1](x))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.