匿名函數(shù)基礎(chǔ)
第一 lambda 是一個表達(dá)式(expression)们颜,并不是一個語句(statement)膳殷。
- 所謂的表達(dá)式,就是用一系列“公式”去表達(dá)一個東西晓折,比如x + 2杰赛、 x**2等等爽室;
- 而所謂的語句,則一定是完成了某些功能淆攻,比如賦值語句x = 1完成了賦值,print 語句print(x)完成了打印嘿架,條件語句 if x < 0:完成了選擇功能等等瓶珊。
- lambda 可以用在一些常規(guī)函數(shù) def 不能用的地方,比如耸彪,lambda 可以用在列表內(nèi)部伞芹,而常規(guī)函數(shù)卻不能。
- lambda 可以被用作某些函數(shù)的參數(shù)蝉娜,而常規(guī)函數(shù) def 也不能唱较。
第二 lambda 的主體是只有一行的簡單表達(dá)式,并不能擴(kuò)展成一個多行的代碼塊召川。
lambda就是為了讓它和常規(guī)函數(shù)各司其職:lambda 專注于簡單的任務(wù)南缓,而常規(guī)函數(shù)則負(fù)責(zé)更復(fù)雜的多行邏輯。
lambda argument1, argument2,... argumentN : expression
為什么要使用匿名函數(shù)荧呐?
- 減少代碼的重復(fù)性汉形;
- 模塊化代碼。
函數(shù)式編程
- 所謂函數(shù)式編程倍阐,是指代碼中每一塊都是不可變的(immutable)概疆,都由純函數(shù)(pure function)的形式組成。這里的純函數(shù)峰搪,是指函數(shù)本身相互獨立岔冀、互不影響,對于相同的輸入概耻,總會有相同的輸出使套,沒有任何副作用罐呼。
- 函數(shù)式編程的優(yōu)點,主要在于其純函數(shù)和不可變的特性使程序更加健壯童漩,易于調(diào)試(debug)和測試弄贿;缺點主要在于限制多,難寫矫膨。