首先,感謝@李毅的回答,他回答的很好。1、初次執(zhí)行那么,我們看看這個程序的運(yùn)行結(jié)果是什么?fun=[(lambdan:i+n)foriinrange(10)]>>>fun[at0x7f032e425668>,at0x7f032e4256e0>,at0x7f032e425758>,at0x7f032e4257d0>,at0x7f032e425848>,at0x7f032e4258c0>,at0x7f032e425938>,at0x7f032e4259b0>,at0x7f032e425a28>,at0x7f032e425aa0>]>>>len(fun)>>>10從運(yùn)行的結(jié)果可以看出,fun參數(shù)是一個以函數(shù)對象為元素的列表,列表的長度為10。其中的長度是由步進(jìn)函數(shù)range(10)來決定的。2、繼續(xù)執(zhí)行我們進(jìn)行往下執(zhí)行。>>>forfinfun:...f(1)...10101010101010101010結(jié)果出現(xiàn)了“意外”,并不是如想象中的那樣,結(jié)果是相同的,沒有步進(jìn)。3、修改步進(jìn)函數(shù)的值>>>fun=[(lambdan:i+n)foriinrange(2)]>>>fun[at0x7f032e42e050>,at0x7f032e42e140>]>>>fun=[(lambdan:i+n)foriinrange(3)]>>>fun[at0x7f032e425668>,at0x7f032e4256e0>,at0x7f032e425758>]>>>從上面的執(zhí)行結(jié)果,我們可以明顯的看出,步進(jìn)函數(shù)決定了list的長度,但是這個list比較特別的地方是列表的元素是function對象,而對于function來說,就涉及到參數(shù)的作用域問題,而function對象里的i參數(shù),明顯是一個全局變量,@Jasoney說的很好,這個i參數(shù)隨著步進(jìn)函數(shù)range(10)的迭代,不斷變化,最終確定值為9,那么function對象最終可以確定為lambadn:9+n,所以,最終的執(zhí)行結(jié)果雖然“奇怪”,但也合乎邏輯。