def calc_prod(lst):
def lazy_prod(): #1
def f(x, y):
return x * y
return reduce(f, lst)
return lazy_prod #2
print calc_prod([1, 2, 3, 4])()为什么不加#1,2就会报错?TypeError: 'int' object is not callable
2 回答
天使之翼死神之镰
TA贡献81条经验 获得超102个赞
你这个是python的闭包,建议好好学习下,calc_prod([1, 2, 3, 4])()后面有括号说明前面calc_prod([1, 2, 3, 4])是个方法句柄,所以调用该方法后必须返回一个方法句柄,即不带()的方法名,整个代码相当于执行了lazy_prod()。
lanrong1995
TA贡献2条经验 获得超0个赞
def calc_prod(lst):
def f(x, y):
return x * y
return reduce(f, lst)
print calc_prod([1, 2, 3, 4])
这样就可以跑了,你在calc_prod后面多加了一个括号
添加回答
举报
0/150
提交
取消