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

哪位能讲一讲这段代码

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 回答

 def f(x, y):返回的两个数的乘积   reduce函数是提取列表里面的两个数值进行f函数运算  lazy_prod()和 calc_prod(lst)是这节课讲的函数  你仔细看看   在复习一下reduce函数就可以了

运行的时候f = calc_prod([1, 2, 3, 4]),f是返回的return lazy_prod ,是函数对象  参数已经传进去了 在 f(x, y)里面  返回的函数对象f()调用一下就有结果了

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

慕仙9155446

其实不用自己再定义个求积的函数 mul函数就是求积的
2018-07-22 回复 有任何疑惑可以回复我~
#2

Lipu_S 提问者 回复 慕仙9155446

好的谢谢
2018-07-22 回复 有任何疑惑可以回复我~
#3

前端设计追逐者3336677

不明白,为什么不直接把值返回去呢,为什么要这么麻烦用函数对象f()调用
2018-09-12 回复 有任何疑惑可以回复我~
#4

1小马哥1

f = calc_prod([1, 2, 3, 4]) 这里为什么要带参数? 带参数不就是一个固定值了吗
2018-09-17 回复 有任何疑惑可以回复我~
#5

慕工程3143514 回复 1小马哥1

此处返回的是函数lazy_prod, 赋给变量f。 f指向lazy_prod函数,再次调用f()即调用lazy_prod()才得到你说的那个固定值
2018-10-12 回复 有任何疑惑可以回复我~
查看2条回复

举报

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

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

进入课程

哪位能讲一讲这段代码

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