這段程序的執行過程,誰能解釋一下,沒看懂
def count():
? ? fs = []
? ? for i in range(1, 4):
? ? ? ? def f(j):
? ? ? ? ? ? def g():
? ? ? ? ? ? ? ? return j * j
? ? ? ? ? ? return g
? ? ? ? r = f(i)
? ? ? ? fs.append(r)
? ? return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
2020-02-06
說說我的理解:原來因為延時調用導致i直接變成3,現在在for循環中新定義一個可以傳入變量的函數,然后里面再套上計算這個變量平方的函數,這樣一來變量就被保存下來了
2020-02-02
fs列表里存放的內容是 通過for循環出來的三個函數對象f(1) f(2) f3(),而f(1) f(2) f(3) 每個里面又定義了一個g()函數并且被返回出來,當最后一行f1(),f2(),f3()執行時,最終執行的是每個g()函數體,我大概就是這么理解的
2020-02-01
參考一師兄的問答:
r = f(i),而def f(j)的j是用來代替可變參數i的,當r取值為1的時候,j也變為1,運行def f(j = 1)的函數,然后代入到def g函數中,得出結果,返回結果。
原文比我說得好,不過忘了那個問答是哪個了,你可以自己查看下哈
2020-01-27
也是初學,我的理解是:
f1,f2,f3 = count()? ?count()返回的是fs? 是一個列表,所以這個可能就是像x,y = 2,3這樣的賦值,不知道是不是元組拆包?? 然后打印f1()? 注意r = f(i) fs.append(r)? 列表fs中添加的是r ,而r 是一個函數f(i),? ?i in range(1, 4),值為1,2,3,所以f(j) 函數被調用,把i的值傳給j? ,返回g,? 那就調用g()函數,g() 返回 j*j, 其實就是實參i * i,返回了1,4,9 分別對應?f1(), f2(), f3()