Python函數(1)lambda

來源:互聯網
上載者:User

標籤:

一、lambda函數

1、lambda函數基礎:

lambda函數也叫匿名函數,即,函數沒有具體的名稱,而用def建立的方法是有名稱的。如下:

"""命名的foo函數"""def foo():return ‘beginman‘  #Python中單行參數可以和標題寫在一行
"""lambda關鍵字建立匿名函數,該運算式同以上函數"""lambda:‘beginman‘             

上面的只是簡單的用lambda建立一個函數對象,並沒有儲存它也沒有調用它,時刻會被回收了。這裡我們儲存並調用:

bar = lambda:‘beginman‘print bar()      #beginman

從上面幾個例子中,可易理解Python lambda文法:

lambda [arg1[,arg2,arg3....argN]]:expression

lambda語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的傳回值。lambda語句構建的其實是一個函數對象。

print lambda:‘beginman‘   #<function <lambda> at 0x00B00A30>

2、無參數

如果沒有參數,則lambda冒號前面就沒有,如以上例子。

3、有參數

def add(x,y):return x+yadd2 = lambda x,y:x+yprint add2(1,2)     #3def sum(x,y=10):return x+ysum2 = lambda x,y=10:x+yprint sum2(1)       #11print sum2(1,100)   #101

二、lambda與def

上面的例子中,可知lambda函數只是建立簡單的函數對象,是一個函數的單行版本,但是這種語句由於效能的原因,調用的時候繞過函數的棧分配。python lambda還有哪些和def不一樣呢?

1 、python lambda會建立一個函數對象,但不會把這個函數對象賦給一個標識符,而def則會把函數對象賦值給一個變數。

如:

>>> def foo():return ‘foo()‘>>> foo<function foo at 0x011A34F0>

2、python lambda它只是一個運算式,而def則是一個語句。lambda運算式運行起來像一個函數,當被調用時建立一個架構對象。

三、lambda函數的用途

個人認為有以下:

1、對於單行函數,使用lambda可以省去定義函數的過程,讓代碼更加精簡。

2、在非多次調用的函數的情況下,lambda運算式即用既得,提高效能

注意:如果for..in..if能做的,最好不要選擇lambda

Python函數(1)lambda

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.