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

关于闭包返回经过的三个函数

def count():
   fs = []    for i in range(1, 4):        def f():
            return i*i
       fs.append(f)    return fs

f1, f2, f3 = count()
原因就在于返回的函数引用了变量i,但它并非立刻执行。等到3个函数都返回时,它们所引用的变量i已经变成了3,因此最终结果为9。

请问返回的三个函数是哪三个函数,不太懂是怎么数的。是count()、fs、f()三个吗?

正在回答

3 回答

count()里返回的是函数,即上面通过fs.append()添加到list里的函数f(),但是函数f()也引用了i*i,并没有对i的值进行计算赋到f()里,只有最后print的时候才进行计算,这时i经过for循环已经=3,所以print的计算里都是以i=3来计算

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

是f1(),f2(),f3()三个函数

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

高山之蓝

应该就是f1,f2,f3
2017-06-20 回复 有任何疑惑可以回复我~

返回的三个函数是f1,f2,f3,

def count():
    fs = []
    for i in range(1, 5):
        def f():
             return i*i
        fs.append(f)
    return fs

f1, f2,f3,f4 = count()
print f1()

这样写出来结果是16.

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

举报

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

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

进入课程

关于闭包返回经过的三个函数

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

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

帮助反馈 APP下载

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

公众号

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