4 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
gen_func函數(shù)返回一個(gè)列表(包含函數(shù)的列表),列表的每一項(xiàng)是一個(gè)函數(shù)(該函數(shù)接受一個(gè)參數(shù)i,返回2*i)
所以,result為[4, 4, 4, 4]

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
>>> def gen_func() :... return [lambda i=i:i*2 for i in range(4)] ...>>> [func(2) for func in gen_func()] [4, 4, 4, 4] >>> [func() for func in gen_func()] [0, 2, 4, 6] >>>
不要覆蓋默認(rèn)參數(shù)值

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
In [38]: def gen_func():
return [lambda i,j=i:(i,j) for j in range(4)]
....:
In [39]: result = [func(2) for func in gen_func()]
In [40]: print result
[(2, 3), (2, 3), (2, 3), (2, 3)]

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
[labmda i:i*2 for i in range(4)]
正確寫(xiě)法應(yīng)該是: [(lambda i:i*2) for i in range(4)]
即lambda的函數(shù)體只能是一個(gè)可以放在函數(shù)的return后面的表達(dá)式.
所以前面的i為lambda的函數(shù)內(nèi)的局部變量, 后面的i為lambda函數(shù)外面的更大作用域內(nèi)的變量.
總之是函數(shù)的作用域和函數(shù)的生命周期的問(wèn)題.
- 4 回答
- 0 關(guān)注
- 344 瀏覽
添加回答
舉報(bào)