分析一段代碼
先說最下面的f1,f2,f3=counrt()
f1, f2, f3 = count() 相當于 [f1, f2, f3] = [f, f, f]
相當于 f1 = f
f2 = f
f3 = f
注意這裡是将函數f添加到了fs中,而不是f傳回的值,可以嘗試執行指令:
可見傳回的是一個由三個函數組成的list。 是以當執行代碼
時,将count包含的三個函數按索引順序分别賦給f1, f2, f3,而此時i=3,是以函數計算結果全部為9.
在python中一切皆對象,而變量i隻有一個,在三次循環中,它指向的對象變化了而已,而函數f1,f2,f3在實際執行的時候i指向的那個位址的實際存放資料已經變為3了,是以三次結果都是一樣的。
fs.append(f)這裡的f隻是指針 不是函數 是以不執行 等到什麼時候用什麼時候執行 是以在for循環3次之後i變成了3 f總是在所有的執行完了才會去調用 因為它被放在【】中
不管調用幾次count 他其中的for已經執行3次 i已經變成3是以此時執行f函數 使用的當然是3
本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1769485