為什么在這段代碼中i的賦值為3呢
def count(): ? ?fs = [] ? ?for i in range(1, 4): ? ? ? ?def f(): ? ? ? ? ? ? return i*i ? ? ? ?fs.append(f) ? ?return fs f1, f2, f3 = count() 為什么在使用這段代碼求f1(),f2(),f3()時,i的賦值為3呢?
def count(): ? ?fs = [] ? ?for i in range(1, 4): ? ? ? ?def f(): ? ? ? ? ? ? return i*i ? ? ? ?fs.append(f) ? ?return fs f1, f2, f3 = count() 為什么在使用這段代碼求f1(),f2(),f3()時,i的賦值為3呢?
2020-02-19
舉報
2020-07-09
返回的fs這個list里面的是三個函數f1 f2 f3 而這三個函數都是f()=i*i,而for循環結束后,i==3,所以你輸出的都是f1(3)、f2(3)、f3(3)
2020-02-19
以下是我個人的理解
在執行這句代碼時:f1, f2, f3 = count()
這個時候進行for循環(range(1,4)產生[1,2,3]),循環結束后i=3,且返回了三個f函數,但沒有調用f函數,此時并不進行return i*i這個計算,當執行這句代碼時:print f1(), f2(), f3(),i已經是3了