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

代码看不懂

def count():    def f():        fs = []        for i in range(1, 4):            fs.append(i*i)        return fs    return f f1,f2,f3=count()()[:] print f1,f2,f3 看不懂,那位大神解读下?

正在回答

1 回答



这儿要讲的就是闭包函数使用了变化的自由变量而带来的一系列问题。闭包函数有个特点就是拿到外部的自由变量不会立即计算,而是等到整个外层函数调用结束之后再进行计算。譬如:f函数再拿到i=1之后并没有计算,而是保存到了一个list里面 f(i) 此时i=1。但是随着i in range(1,4)的不断进行,最终i=3 这就导致列表中的f(i) i都是3.我是这么理解的,存在错误的话,请海涵
0 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

代码看不懂

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号