def?count():
????fs?=?[]
????for?i?in?range(1,?4):
????????def?f():
?????????????return?i*i
????????fs.append(f)
????return?fs
f1,?f2,?f3?=?count()這個(gè)函數(shù)中,i的值是i=1的時(shí)候,返回?1,fs.append(f)就是fs?=?[1],以此類推得出的??fs?=?[1,4,9],沒毛病吧。for?循環(huán)結(jié)束。最終返回的?lis就是?1,4,9??啊。。那么??f1,f2,f3?=?count()不就是指的list中的??1,4,9嘛??為什么說(shuō)是9,9,9??。雖然i?的值經(jīng)for循環(huán)完以后變成了3,但是?fs?列表已經(jīng)輸出完畢了啊、、求指導(dǎo)。。。
2 回答
已采納

艾爾森
TA貢獻(xiàn)33條經(jīng)驗(yàn) 獲得超27個(gè)贊
仔細(xì)觀察for循環(huán)的三次迭代,每次都是將f()函數(shù)添加到fs列表中(注意在fs中的是函數(shù)式而不是值) 所以你一開始說(shuō)的在i等于1的時(shí)候 fs.append(f) 那樣的話fs = [<function f <函數(shù)地址>>] 是一個(gè)函數(shù) 而不是值?
所以等循環(huán)結(jié)束后返回的list里面就是存的三個(gè)函數(shù) 而這三個(gè)函數(shù)都是i*i ,并且這時(shí)for循環(huán)已經(jīng)完成,i的值最終是3 所以當(dāng)調(diào)用f1,f2,f3任意一個(gè)計(jì)算i*i的時(shí)候,輸出結(jié)果都是9
添加回答
舉報(bào)
0/150
提交
取消