【学习笔记】36、lambda是单表达式函数
lambda是單表達式函數(shù)
一、lambda的定義
Python中的lambda關(guān)鍵字可用來快速聲明小型匿名函數(shù)。lambda函數(shù)的行為與使用def關(guān)鍵字聲明的常規(guī)函數(shù)一樣,可以用于所有需要函數(shù)對象的地方。
比如兩個數(shù)的加減,就可以如下定義:
?
那么lambda就比def聲明的函數(shù)少寫了幾個字符嘛?
其實從語法上來講表達式位于lambda內(nèi)部,lambda不需要先將函數(shù)對象和名稱綁定,只需要在lambda中創(chuàng)建一個想要執(zhí)行的表達式,然后像普通函數(shù)那樣立即調(diào)用即可。
所以上面的例子也可以這樣實現(xiàn):
?
lamdba和普通函數(shù)還有一點不同,lambda函數(shù)只能含有一個表達式,不能使用語句或注解,當然也不能使用返回語句。那么如何從lambda返回值呢?執(zhí)行l(wèi)ambda函數(shù)時會計算其中的表達式,然后自動返回表達式的結(jié)果,所以總會有一個隱式的返回表達式,因此lambda函數(shù)也稱為單表達式函數(shù)。
二、lambda的使用場景
因為lambda是匿名的,所以不需要事先分配一個名字,因此,lambda能方便靈活地快速定義。比如在對可迭代對象進行排序時,就可以使用lambda表達式定義簡短的key函數(shù)。
?
lambda與普通嵌套函數(shù)一樣,可以像詞法閉包那樣工作。比如下面的例子,即使n在adder()函數(shù)中定義,但在lambda中仍可以訪問。
三、不要過度使用lambda
避免使代碼變得難以理解。
?
?
?
?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【学习笔记】36、lambda是单表达式函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【学习笔记】35、定义自己的异常类
- 下一篇: 【学习笔记】37、用正则表达式解析和提取