python 匿名函數與lambda

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')
發佈了65 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章