匿名函式lambda

2021-09-13 10:57:53 字數 2559 閱讀 9827

在python中有個匿名函式特性非常的便捷和有用,用關鍵字lambda就可以宣告乙個匿名函式,所以很多時候直接稱呼為lambda函式。

每次介紹新特性的時候,我們都要反問什麼是lambda函式呢?因為又叫匿名函式,所以是指沒有宣告函式名稱的函式,它和平時我們定義普通函式使用def關鍵字不同,

lamda函式的宣告語法如下:

lambda argument_list: expression
其中,lambda是python預留的關鍵字,argument_list和expression由使用者自定義,中間用冒號 『』:』』 間隔。這裡面argument_list是引數列表,它的結構與python中定義普通函式時的引數列表是一樣的。而這裡的expression是乙個關於引數的表示式。表示式**現的引數需要在argument_list中有定義,並且表示式只能是單行的。

看下實際使用例子:

argument_list可以有非常多的形式,如下的4個例子都是可以的,方法1例子中使用了a, b變數引數,方法2例子中用a=1, b=2設定預設值引數,方法3例子中用*args*位置引數,方法4例子中用**kwargs關鍵字引數來作為lambda函式的引數傳遞方式都是可以的。expression表示式裡我們分別對應argument_list裡接收的引數做了各自的表示式處理。

func1 =

lambda a, b: a + b

print

(f'func1: '

)func2 =

lambda a=

1, b=

2: a *

2print

(f'func2: '

)func3 =

lambda

*args:

[arg *

2for arg in args]

print

(f'func3: '

)func4 =

lambda

**kwargs:

[kwargs[key]*2

for key in kwargs]

print

(f'func4: '

)# 輸出如下:

# func1: 3

# func2: 2

# func3: [6, 4]

# func4: [6, 4]

lambda多種用法

由於lambda的語法是固定的,所以本質上使用的用法也就是固定的,但是在不同的場景中可以擴充套件,比如有如下幾種場景。

lambda_func =

lambda a, b: a + b

print

(f'lambda_func: '

)# 輸出如下:

# lambda_func: 3

def

add_number

(x):

return

(lambda y: x+y)

a = add_number(1)

print

(type

(a))

print

(a(3))

# 輸出如下:

# # 4

map_result =

map(

lambda x:

abs(x),[

-1,2

,-3,

4,-5

])print

(f'map_result: '

)from functools import

reduce

reduce_result =

reduce

(lambda x,y: x+y,[1

,3,5

,7,9

])print

(f'reduce_result: '

)# 輸出如下:

# map_result: [1, 2, 3, 4, 5]

# reduce_result: 25

在lambda中也可以直接使用if - else語句來做表示式判斷,這個判斷表示式編寫的方式其實就相當於其它語言裡的三元運算子,但是盡量不要編寫過於複雜的判斷,畢竟這樣增加了**的閱讀難度。

f =

lambda x:

1if x==

"a"else

"none"

print

(f("a"))

# 輸出如下:

# 1

可以直接將lambda函式傳入的變數引數x,以字典取值的方式取出對應的值。

str_dict =

f =lambda x: str_dict[x]

print

(f("b"))

# 輸出如下:

# 2

lambda匿名函式

匿名函式 lambda函式是一種快速定義單行的最小函式,是從lisp借用來的,可以用在任何需要函式的地方。def f x,y return x y g lambda x,y x y g 2,3 優點 1 使用python寫一些執行的指令碼時,使用lambda可以省去定義函式的過程,讓 更精簡 2 對...

lambda匿名函式

lambda語句中,冒號前argumes是引數,可以有多個,可以用逗號隔開或其他形式,冒號右邊的是表示式,並將其結果返回。示例 f lambda x,y x y print f 2,3 6myadd lambda args sum args result myadd 1,3,4 print resu...

lambda匿名函式

lambda 函式用於建立匿名函式。匿名函式就是沒有名稱的函式,也就是不再使用def語句定義的函式。lambda 函式語法格式如下 lambda args1 args2,argn expression 說明 def和lambda函式的對比總結 def建立的函式是有名稱的,而lambda沒有函式名稱,...