python lambda表達式的介紹和使用

lambda

python 允許用 lambda 關鍵字創造匿名函數。匿名就意味着不需要顯式的定義,比如python定義一個函數要以def開頭,但是我們使用lambda不需要def也能定義一個函數。
然而,作爲函數,它們也能有參數。一個完整的 lambda“語句”代表了一個表達式,這個表達式的定義體必須和聲明放在同一行。lambda函數的語法如下:
lambda [arg1[, arg2, … argN]]: expression
參數是可選的,如果使用的參數話,參數通常也是表達式的一部分。
lambda 表達式返回可調用的函數對象。
用合適的表達式調用一個 lambda 生成一個可以像其他函數一樣使用的函數對象。它們可被傳入給其他函數,用額外的引用別名化,作爲容器對象以及作爲可調用的對象被調用(如果需要的話,可以帶參數)。當被調用的時候,如過給定相同的參數的話,這些對象會生成一個和相同表達式等價的結果。它們和那些返回等價表達式計算值相同的函數是不能區分的。
比如如下使用:
lambda :True
沒有參數,返回一個TRUE

def add(x, y): return x + y ? lambda x, y: x + y 

x,y是函數的參數,lambda建立了一個表達式,返回一個函數對象,參數是x,y
也可以這樣:

add_ = add(x, y): return x + y ? lambda x, y: x + y

使用的時候,只要調用

c = add_(a, b)

就可以實現a+b的操作
同樣的,在tensorflow中如果想定義一個簡單的卷積操作,可以這樣使用:

conv = lambda inputs, dim: tf.nn.conv2d(inputs, dim, [1, ksize_h,ksize_w, 1], padding=padding)

返回的是一個卷積函數對象,輸入包含兩個參數,接下來使用卷積的時候,直接調用

conv1 = conv(inputs, out_dim)

即可,這樣就完成了一次簡單的卷積運算,有些時候簡直好用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章