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

当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊

当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊

正在回答

4 回答

使用  print i  分别在循环语句下的每一个小段测试一遍,你就会明白是什么原因了

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

其实就是存入数组的内容由函数名改成了函数。就原始代码把fs.append(f)改成fs.append(f()),打印f1,f2,f3就不会有999的情况了

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

我自己的理解是for是循环语句,调用count语句,count中的for直接循环到底,也就是到i=3。不知道这样理解是否正确

0 回复 有任何疑惑可以回复我~
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(),f2(),f3()

返回的这几个函数中,都引用了 函数 count 中的 变量 i(不是用的 i 变化过程中的值,而是引用的 i ,也就是,真正执行函数的时候 i 是多少,就是多少),后面执行print的时候,count函数已经执行结束了,count函数执行结束后 i 的值为 3 ,所以到后面 print 的时候,真正执行 返回的几个函数的时候,i 已经是3了。

通俗点说,f 表明 会用count中 i 变量(是用 i 这个变量,不是用 i 当前的值!!!),但没说现在用,同时 f 不会阻止 i 的变化,当count 执行结束后, i 已经是3了。

至于,为什么在count函数外,可以用count函数的变量 i ,那就是另一个问题了,可以自己再看下相关资料。

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

举报

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

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

进入课程

当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊

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