为啥举例的结果是三个九
在这一节纠结了半天
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 哪位大神能否再讲解的细致一些
在这一节纠结了半天
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 哪位大神能否再讲解的细致一些
2020-08-22
个人理解如下,带‘测’字的是自己在理清运行过程时加的
def count():
fs = []
for i in range(1, 4):
def f():
#测:print('i的值:',i)
return i*i
#测 :print(f, i)
fs.append(f)
#上面这一句追加语句append,只是把名为f的这三个不同的函数依次放进fs里边存着,
#根本没有去调用f这个函数,所以f里边的语句永远不会执行
#而这个for循环结束的时候,i已经增长为3,
#所以在下面调用f函数,即f1()或f2()或f3()这种形式时,f里边的语句才开始被执行
#而进入f函数里边的这个i的值一直就是之前for循环结束时的3,所以最后结果才会出现三个9
return fs
f1,f2,f3 = count()
#测 :print(f1(),f2(),f3())或直接f1()
#在调用f1时,即f1()这种形式,才会有数值显示
#但是,此时的值全部都是9,而不是1,4,9
#因为当count()函数返回了3个函数时,这三个函数引用的变量i的值已经是3了,
#f1,f2,f3 = [f(),f(),f()]是三个不同的f,在内存中的存储位置都不同
举报