难以理解yq
fs是一个lst,[1,4,9],那f1,f2,f3应该都是[1,4,9]哇?
2016-12-25
我就直接写在代码过程里面吧
跟着程序进入的思路来
def count(): fs = [] #>2.此时是空list for i in range(1, 4): #>3.这里是重点,开始循环 i = 1 # 6.> 此时i = 2 # 9.> 此时i=3 def f(): #>4.进入函数 # 7.>进入函数 # 10.>进入函数 return i*i #>14.最后进行计算 然后被调用 i*i 此时的i为3 fs.append(f) #>5.注意这里 fs.append(f) f是函数!并不是f(),此时把f函数添加到list里 # 8.>注意这里 有一次把函数添加到list里。#11.>如上 return fs #>12.此时把整个list都返回!注意此时是fs[f,f,f]都是函数! f1, f2, f3 = count() # >1.第一步并不是赋值,而是进行调用count()函数 #》13.然后进行赋值调用 fs[f1,f2,f3] f1() #15. i*i f2() #16. i*i f3() #17. i*i
跟着思路走吧,我讲的也不是太清楚
def count(): fs = [] #>2.如上 for i in range(1, 4): #>3. i = 1 def f(j): #>5.进入函数f(j) j = 1 def g(): #>7.记录 return j*j return g #>6.返回函数 r=f(i) #>4.调用f(i)函数 i = 1 fs.append(r) #>8.此时添加的是r函数到list里,r调用的f(j)函数,j = 1,最后返回的是一个g()函数,把这个理解为g1()吧,此时j为1 return fs f1, f2, f3 = count() #>1.如上第一步骤 print f1(), f2(), f3() #>xx.最后自己想想看
def count(): fs = [] #>2.如上 for i in range(1, 4): #>3. i = 1 def f(j): #>5.进入函数f(j) j = 1 return j*j r=f(i) #>4.调用f(i)函数 i = 1 fs.append(r) #>8.此时添加的是r函数到list里,r调用的f(j)函数,j = 1,最后返回的是一个g()函数,把这个理解为g1()吧,此时j为1 return fs f1, f2, f3 = count() #>1.如上第一步骤 print f1(), f2(), f3() #>xx.最后自己想想看
这样不使用闭包,函数f(),直接返回 j*j 可不可以呢? 还有变量j,没有被赋初值,是默认为1吗?
非常感谢您的回答!
举报