標(biāo)題描述可能不是很準(zhǔn)確,因?yàn)槲也恢绬栴}的原因在哪里在《Python學(xué)習(xí)手冊(cè)第三版》第16章,作用域和參數(shù)這里,有一個(gè)例子,反復(fù)想了很久,不得其解,希望大家?guī)臀医饣?。下面是書中的?nèi)容:嵌套作用域和lambda盡管對(duì)于def本身來說,嵌套作用域很少使用,但是當(dāng)開始編寫lambda表達(dá)式時(shí),就要注意了。我們到17章才會(huì)深入學(xué)習(xí)lambda,但是簡(jiǎn)短地說,它就是一個(gè)表達(dá)式,將會(huì)生成后面會(huì)被調(diào)用的一個(gè)新的函數(shù),與def語(yǔ)句很相似。由于它是一個(gè)表達(dá)式,盡管能夠使用在def中不能使用的地方,例如,在一個(gè)列表或是字典常量之中。就像def,lambda表達(dá)式引入了新的本地作用域。多虧了嵌套作用域查找層,lambda能夠看到所有生存在所編寫的函數(shù)的變量。因此,以下的代碼現(xiàn)在能夠運(yùn)行,但僅僅是因?yàn)槿缌钅軌蚴褂们短鬃饔糜蚍▌t了。>>>deffunc():x=4action=(lambdan:x**n)returnaction>>>x=func()>>>printx(2)16我的疑惑是,為什么需要先把x賦值給func(),如果不賦值,直接調(diào)用func()會(huì)顯示:最后,printx(2),為什么這里可以傳參數(shù),并且傳進(jìn)的參數(shù),變成了函數(shù)例子中l(wèi)ambda表達(dá)式里的n?不知道我這樣表達(dá)是否清楚。謝謝大家。
關(guān)于Python里面lambda用法的一個(gè)疑惑
ABOUTYOU
2019-04-08 11:18:38