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

这样子为啥连9 9 9 都不输出了...

https://img1.sycdn.imooc.com//5b3082c50001f08404380334.jpg求大神帮忙!!!

正在回答

2 回答

执行循环体的时候,数组fs在添加函数f,但是此时函数f并没有执行,这里将此处的函数f当成一个常量或者变量看待就好了,i的值还是在增加,最后i为3的时候,循环体执行完毕,数组count()的返回值就是[f函数1, f函数2,f函数3], 然后你使用循环打印数组中的数据,其实你这样打印出来的是一些function,打印不出来结果的,你需要将print j替换成print j() 才会有结果,这样就是去执行f函数体里面的内容,因为i已经为3了,所以三个函数的结果都是9.

3 回复 有任何疑惑可以回复我~
def count():
    fs = []
    for i in range(1, 4):
        def f(a):
            print("i的值等于" + str(a))
            return a * a
        fs.append(f(i))
    return fs

for j in count():
    print(j)

执行结果:

i的值等于1
i的值等于2
i的值等于3
1
4
9

如果这样修改的话,结果就是1,4,9了。

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

微sun 提问者

懂了,感谢~
2018-06-25 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

这样子为啥连9 9 9 都不输出了...

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