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

好像懂了一点

def count():

    fs = []

    for i in range(1, 4):

        def f():

             return i*i

        fs.append(f)

    return fs


f1, f2, f3 = count()


print f1()

print f2()

print f3()

仔细地看了一下,fs.append(f)里面的f是一个函数,且未被执行。所以里面的函数式i*i.因此,f1,f2,f3被执行以后都是i*i。count()也会把i传值给他们。经过变化,i=3.故都是9

正在回答

1 回答

对,执行f1, f2, f3 = count()的时候,不会去运行def f():这个函数,但是for循环却会一直执行,而且每次都会将f()追加到fs,但因为没有传入i值,所以每次循环下来追加的都是f(),即为同一个数值,当然会覆盖掉之前的f()!!所以当输入print f1()的时候,此时运行def f():这个函数的时候,i值变为3,返回的就是9了。

不知道理解的对不对,如有错,望指正!!

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

举报

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

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

进入课程

好像懂了一点

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