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

能否详细解释一下这组代码,几个def到底有什么用处

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()


正在回答

1 回答

先看最里层,是一个二元函数,代表两个数相乘;中间层函数的返回值调用了一个reduce函数,意思是对lst里面的值依次调用f来计算(可以查看reduce的详细定义),lst初始值为1;最外层函数的返回值即中间层的结果。现在再按顺序读下去,这个calc_prod函数就是在对一个表里面的值不断调用f函数。ps:一定要把reduce的意思弄清楚!

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

慕侠0475284 提问者

非常感谢!
2017-05-31 回复 有任何疑惑可以回复我~
#2

慕侠0475284 提问者

中间层函数是def lazy_prod():调用一个reduce函数吗
2017-05-31 回复 有任何疑惑可以回复我~
#3

慕侠0475284 提问者

中间层返回值是哪个?谢了啊,真的搞了好久了
2017-05-31 回复 有任何疑惑可以回复我~
#4

慕侠0475284 提问者

懂了,懂了,太感谢了
2017-05-31 回复 有任何疑惑可以回复我~
#5

慕工程8309199

最外层返回值是lazy_prod函数,也就是题中的f,f()就是调用lazy_prod函数,返回reduce函数,f(x,y)返回x*y
2017-06-08 回复 有任何疑惑可以回复我~
#6

曾老爷子 回复 慕侠0475284 提问者

return reduce(f, lst, 1)
2017-06-21 回复 有任何疑惑可以回复我~
查看3条回复

举报

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

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

进入课程

能否详细解释一下这组代码,几个def到底有什么用处

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