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

返回函数问题

def calc_prod(lst):

    def lazy_prod():

        def f(x, y):

            return x * y

        return reduce(f, lst, 1)

    return lazy_prod

f = calc_prod([1, 2, 3, 4])

print f()

 这程序中实际执行的就是调用f(),接着顺序执行到return reduce之后计算出来累乘,同时作为返回值返回  calc_prod和lazy_prod作用是什么???

正在回答

2 回答

嗯,结果是相同的, 但是calc_prod(lst)是返回了 一个指向函数lazy_pod的变量,而 print f() 也就相当于是调用了lazy_pod() 函数, 从而返回了reduce()

0 回复 有任何疑惑可以回复我~

实际上述函数变成

def f(x, y):

    return x * y

print reduce(f, [1, 2, 3, 4])

结果是相同的,如果说calc_prod(lst)是调用获得list,那lazy prod的什么作用?难不成是因为calc prod无返回值???



0 回复 有任何疑惑可以回复我~
#1

胡说鱼

‘延迟’的效果
2017-08-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

返回函数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信