为了账号安全,请及时绑定邮箱和手机立即绑定

关于返回函数,为什么要在外面再套一个函数?

关于返回函数,为什么要在外面再套一个函数?

错过了年华 2017-12-25 22:46:30
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()。

查看完整回答
1 反对 回复 2018-01-08
?
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后面多加了一个括号

查看完整回答
反对 回复 2018-01-03
  • 2 回答
  • 0 关注
  • 1424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信