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

“延迟计算”怎么理解?

但是,如果返回一个函数,就可以“延迟计算”:

def calc_sum(lst):
    def lazy_sum():
        return sum(lst)
    return lazy_sum

# 调用calc_sum()并没有计算出结果,而是返回函数:             疑问:这里说的调用calc_sum(),体现在哪里?

>>> f = calc_sum([1, 2, 3, 4])              疑问:这一步是什么意思
>>> f
<function lazy_sum at 0x1037bfaa0>

# 对返回的函数进行调用时,才计算出结果:                         疑问:为什么最后返回的是calc_sum,不是lazy_sum吗

>>> f()
10


正在回答

2 回答

第一个问题:calc_sum()函数就是一个传递参数lst的一个函数,没有其他意思,相当于一件外套

第二个问题:f = calc_sum([1, 2, 3, 4])  在函数calc_sum中传入一个列表作为参数,并把函数命名为f,f就相当于函数

第三个问题:函数返回的结果就是函数,lazy_sum已经计算完了,相当于得到1+2+3+4


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

那为什么不写lst =[1,2,3,4]呢?看起来calc_sum()是一个外套函数,那么 直接换掉里面的lst或者直接对lst赋值不简便多了么

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

举报

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

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

进入课程

“延迟计算”怎么理解?

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