lambda函數(shù)的作用

目錄

  1. lambda函數(shù)讓代碼看起來更簡潔直觀
  2. lambda函數(shù)是一個函數(shù)對象
  3. 總結

1.lambda函數(shù)讓代碼看起來更簡潔直觀

lambda函數(shù)又稱匿名函數(shù),有些情況下我們不用顯式定義而采用匿名函數(shù)會讓代碼看上去更加簡潔。

In [48]: ls = [1,2,3]

In [49]: print(list(map(lambda x:x*x, ls)))
[1, 4, 9]

上面的例子中,通過lambda函數(shù)使得我們可以在不顯式定義函數(shù)的情況下為map傳遞了一個函數(shù),這使得代碼看上去更為簡潔直觀。

關鍵詞lambda定義了一個匿名函數(shù),冒號前面的是匿名函數(shù)的參數(shù)(當需要多個參數(shù)時,參數(shù)之間用逗號,分割),冒號后的是一個表達式,lambda函數(shù)的返回內(nèi)容就是表達式的值。

2.lambda函數(shù)是一個函數(shù)對象

lambda函數(shù)也是一個函數(shù)對象,所以也可以賦值給一個變量。

In [50]: lambda x,y:x*x+y*y
Out[50]: <function __main__.<lambda>>

In [51]: f1 = lambda x,y:x*x+y*y

In [52]: f1(1,2)
Out[52]: 5

lambda函數(shù)也作為返回值返回。

In [53]: def f():
    ...:     x = 1
    ...:     return lambda y:x*x+y*y    # lambda函數(shù)引用了本地變量x,并且在函數(shù)f結束后保存了x的狀態(tài)
    ...:

In [54]: m = f()

In [55]: m(2)
Out[55]: 5

In [56]: m.__closure__  # 證明m是一個閉包
Out[56]: (<cell at 0x00000132044E9E28: int object at 0x0000000051F260C0>,)

3.總結

  • 有時我們需要在程序的某處使用一次某個函數(shù),在這時使用lambda函數(shù)更加的方便也便于理解。
  • python對lambda函數(shù)限制很多,其中很重要的一個就是只允許lambda函數(shù)包含一條表達式。這是為了避免濫用lambda函數(shù)——畢竟大量的抽象帶來簡潔的同時也帶來了理解的困難。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容