当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊
当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊
当count()函数返回了3个函数时,这3个函数所引用的变量 i 的值已经变成了3,这是为什么啊
2020-02-20
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 ,那就是另一个问题了,可以自己再看下相关资料。
举报