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)
即可,這樣就完成了一次簡單的卷積運算,有些時候簡直好用 Python lambda表示式學習
lambda只是乙個表示式,函式體比def簡單很多。lambda的主體是乙個表示式,而不是乙個 塊。僅僅能在lambda表示式中封裝有限的邏輯進去。lambda表示式是起到乙個函式速寫的作用。允許在 內嵌入乙個函式的定義。如下例子 定義了乙個lambda表示式,求三個數的和。再看乙個例子 用lamb...
原創 python lambda表示式
對於lambda先看一下 python filter函式 一文提到的函式 li boy 41 tim qq 1125891 filter fu,li 41 1125891 可以用lambd一句話表示 li boy 41 tim qq 1125891 filter lambda x x.isdigit...
python lambda表示式詳解
python lambda表示式詳解 1 lambda簡介 先來看一段 示例 第一行是lambda宣告,x,y相當於傳入的引數,整個函式會返回x y的值。lambda作為乙個表示式,定義了乙個匿名函式,上例的 x,y為入口引數,x y為函式體。在這裡lambda簡化了函式定義的書寫形式。python...