一、使用方法
原文:
lambda只是乙個表示式,函式體比def簡單很多。
lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
lambda表示式是起到乙個函式速寫的作用。允許在**內嵌入乙個函式的定義。
如下例子:
定義了乙個lambda表示式,求三個數的和。
再看乙個例子:
用lambda表示式求n的階乘。
lambda表示式也可以用在def函式中。
看例子:
這裡定義了乙個action函式,返回了乙個lambda表示式。其中lambda表示式獲取到了上層def作用域的變數名x的值。
a是action函式的返回值,a(22),即是呼叫了action返回的lambda表示式。
這裡也可以把def直接寫成lambda形式。如下
二、與def的區別
原文:python中,lambda函式也叫匿名函式,及即沒有具體名稱的函式,它允許快速定義單行函式,類似於c語言的巨集,可以用在任何需要函式的地方。這區別於def定義的函式。
lambda與def的區別:
1)def建立的方法是有名稱的,而lambda沒有。
2)lambda會返回乙個函式物件,但這個物件不會賦給乙個識別符號,而def則會把函式物件賦值給乙個變數(函式名)。
3)lambda只是乙個表示式,而def則是乙個語句。
4)lambda表示式」 : 「後面,只能有乙個表示式,def則可以有多個。
5)像if或for或print等語句不能用於lambda中,def可以。
6)lambda一般用來定義簡單的函式,而def可以定義複雜的函式。
6)lambda函式不能共享給別的程式呼叫,def可以。
lambda語法格式:
lambda 變數 : 要執行的語句
lambda[arg1 [, agr2,.....argn]] : expression如
1、單個引數的:
>>>g =lambda x : x ** 2
>>>print g(3)
2、多個引數的:
>>>g =lambda x, y, z : (x + y) ** z
>>>print g(1,2,2)
lambda表示式會返回乙個函式物件,如果沒有變數接受這個返回值的話,它很快就會被丟棄。也正是
由於lambda只是乙個表示式,所以它可以直接作為list和dict的成員。如:
>>>list_a = [lambda a: a**3,lambda b: b**3]
>>>list_a[0]at 0x0259b8b0
>>>g = list_a[0]
>>>g(2)8
這裡就沒法用def語句代替了,語句是不能巢狀在裡面的。lambda表示式中,冒號前面是引數,可以有
多個,用逗號分隔,冒號右邊是返回值。
lambda具體用不用,視情況而定吧,有時候使用lambda可以簡化**。
Python lambda表示式學習
lambda只是乙個表示式,函式體比def簡單很多。lambda的主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda表示式是起到乙個函式速寫的作用。允許在 內嵌入乙個函式的定義。如下例子 定義了乙個lambda表示式,求三個數的和。再看乙個例子 用lamb...
原創 python lambda表示式
對於lambda先看一下 python filter函式 一文提到的函式 li boy 41 tim qq 1125891 filter fu,li 41 1125891 可以用lambd一句話表示 li boy 41 tim qq 1125891 filter lambda x x.isdigit...
python lambda表示式詳解
python lambda表示式詳解 1 lambda簡介 先來看一段 示例 第一行是lambda宣告,x,y相當於傳入的引數,整個函式會返回x y的值。lambda作為乙個表示式,定義了乙個匿名函式,上例的 x,y為入口引數,x y為函式體。在這裡lambda簡化了函式定義的書寫形式。python...