用 lambda 表達式來聲明函數,是Python中一類比較特殊的聲明函數的方式,lambda 來源於 LISP 語言,使用 lambda 可以聲明一個匿名函數。所謂匿名函數是指所聲明的函數沒有函數名,lambda 表達式就是一個簡單的函數。使用 lambda 聲明的函數可以返回一個值,在調用函數時,直接使用 lambda 表達式的返回值。
lambda 參數列表:表達式
lambda函數有如下特性:
- lambda函數是匿名的:所謂匿名函數,通俗地說就是沒有名字的函數。lambda函數沒有名字。
- lambda函數有輸入和輸出:輸入是傳入到參數列表argument_list的值,輸出是根據表達式expression計算得到的值。
- lambda函數一般功能簡單:單行expression決定了lambda函數不可能完成複雜的邏輯,只能完成非常簡單的功能。由於其實現的功能一目瞭然,甚至不需要專門的名字來說明
示例:使用 lambda 定義函數並調用
fun = lambda x: x * x - x # 使用 lambda 定義一個函數,返回函數地址
print(fun(3)) # 輸出調用 lambda 定義的函數
print(fun) # 輸出函數返回值
# <function <lambda> at 0x02E617C8> :fun 實際指向 lambda 定義的函數地址
lambda 適用於定義小型函數。與 def 聲明的函數不同,使用 lambda 聲明的函數,在函數中僅能包含單一的參數表達式,而不能包含其他的語句,在 lambda 中也可以調用其他的函數。
def show(): # 使用 def 聲明 show 函數
print('lambda')
f = lambda: show() # 在 lambda 中調用 show 函數
f() # 調用使用 lambda 生成的函數
def shown(n): # 使用 def 聲明 shown 函數
print('lambda' * n)
fn = lambda x: shown(x) # 在 lambda 中向 shown 函數傳遞值
fn(2) # 調用 lambda 生成的函數
def usereturn(x): # 使用 def 聲明 usereturn 函數
return x * 2
fr = lambda x: usereturn(x) * x # 在 lambda 函數中使用 usereturn 函數的返回值
print(fr(3)) # 輸出調用使用 lambda 生成的函數生成的值
fun = lambda x: print(x) # 在 Python3.7 中可以使用 print 語句
fun(3)
注:不能在 lambda 表達式中使用其他語句