Python lambda表示式學習總結

2021-08-13 04:29:41 字數 1868 閱讀 9486

一、使用方法

原文:

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...