自學Python教程【第六十八節(jié)】lambda 表達式
歡迎大家來到自學Python教程教室,上一講我們分享了函數(shù)的參數(shù)傳遞的相關內(nèi)容,這節(jié)課我們學習Python的另外一個知識點lambda 表達式。lambda 表達式可以充分體現(xiàn)了 Python 是一門簡潔的語言這一特點,來看看吧:
lambda 表達可以被看做是一種匿名函數(shù)。它可以讓你快速定義一個極度簡單的單行函數(shù)。譬如這樣一個實現(xiàn)三個數(shù)相加的函數(shù):
def sum(a, b, c): return a + b + c print sum(1, 2, 3) print sum(4, 5, 6)
輸出:
6 15
如果使用 lambda 表達式來實現(xiàn):
sum = lambda a, b, c: a + b + c print sum(1, 2, 3) print sum(4, 5, 6)
輸出:
6 15
兩種方法的結(jié)果是相同的。
lambda 表達式的語法格式:
lambda 參數(shù)列表: 表達式
定義 lambda 表達式時,參數(shù)列表周圍沒有括號,返回值前沒有 return 關鍵字,也沒有函數(shù)名稱。
它的寫法比 def 更加簡潔。但是,它的主體只能是一個表達式,不可以是代碼塊,甚至不能是命令(print 不能用在 lambda 表達式中)。所以 lambda 表達式能表達的邏輯很有限。
lambda 表達式創(chuàng)建了一個函數(shù)對象,可以把這個對象賦值給一個變量進行調(diào)用,就像上面的例子中一樣。
來看一個復雜一點的例子,把 lambda 表達式用在 def 函數(shù)定義中:
def fn(x): return lambda y: x + y a = fn(2) print a(3)
輸出:
5
這里,fn 函數(shù)的返回值是一個 lambda 表達式,也就等于是一個函數(shù)對象。當以參數(shù)2來調(diào)用 fn 時,得到的結(jié)果就是:
lambda y: 2 + y
a = fn(2) 就相當于:
a = lambda y: 2 + y
所以 a(3) 的結(jié)果就是5。
lambda 表達式其實只是一種編碼風格,這種寫法更加 Pythonic。這并不意味著你一定要使用它。事實上,任何可以使用 lambda 表達式的地方,都可以通過普通的 def 函數(shù)定義來替代。在一些需要重復使用同一函數(shù)的地方,def 可以避免重復定義函數(shù)。況且 def 函數(shù)更加通用,某些情況可以帶來更好地代碼可讀性。
而對于像 filter、sort 這種需要內(nèi)嵌函數(shù)的方法,lambda 表達式就會顯得比較合適。這個我以后會再單獨介紹。
當然對于初學者來說,了解 lambda 表達式還有一個重要作用就是,看懂別人寫的代碼。
恭喜您在Python自學的道路上又堅持了一天,今天我們學習了Python中lambda 表達式的相關內(nèi)容,,下節(jié)課我們將分享更多Python中的相關內(nèi)容,敬請關注 !
好啦,今天的分享到這里就結(jié)束了,希望大家持續(xù)關注馬哥教育官網(wǎng),每天都會有大量優(yōu)質(zhì)內(nèi)容與大家分享!。
聲明:文章來源于網(wǎng)絡,侵刪!