Python雖然不是一種函數式編程語言,但仍然給予了函數式編程很大的重視。本文要說的是匿名函數lambda。
這種語句的目的是由於性能的原因,在調用時繞過函數的棧分配。其語法是:
lambda [arg1[, arg2, ... argN]]: expression
其中,參數是可選的,如果使用參數的話,參數通常也會在表達式之中出現。
下面舉例來說明lambda語句的使用方法(無參數)。
# 使用def定義函數的方法
def true():
return True
#等價的lambda表達式
>>> lambda :True
<function <lambda> at 0x0000000001E42518>
# 保留lambda對象到變量中,以便隨時調用
>>> true = lambda :True
>>> true()
True
下面再舉一個帶參數的例子。
# 使用def定義的函數
def add( x, y ):
return x + y
# 使用lambda的表達式
lambda x, y: x + y
# lambda也允許有默認值和使用變長參數
lambda x, y = 2: x + y
lambda *z: z
# 調用lambda函數
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y=2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')