日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python中的lambda函數用法指南_python

作者:柳小蔥 ? 更新時間: 2023-02-15 編程語言

最近碰見太多次lambda函數了,那就來詳細解釋一下該函數。

lambda函數

我們先對lambda函數進行一個簡單的介紹

  • lambda函數是一種匿名函數,即沒有名字的函數
  • 使用lambda保留字定義,函數名是返回結果
  • lambda函數的函數體只是一個表達式
  • lambda函數用于定義簡單的、能夠在一行內表示的函數
  • lambda表達式” : “后面,只能有一個表達式,def則可以有多個。
  • lambda一般用來定義簡單的函數,而def可以定義復雜的函數

先來看一個例子:

g=lambda x:x+1
print(g(1))
#結果為2

可以這樣認為,lambda作為一個表達式,定義了一個匿名函數。等價于:

def g(x):
    return x+1

非常容易理解,在這里lambda簡化了函數定義的書寫形式。是代碼更為簡潔,但是使用函數的定義方式更為直觀,易理解。

可傳入多個參數

g=lambda x,y,z:x+y+z*2
print(g(1,2,3))
#結果為9

#也可直接傳遞參數
(lambda x:x**2)(3)
#結果為9

lambda表達式會返回一個函數對象,如果沒有變量接受這個返回值的話,它很快就會被丟棄。也正是由于lambda只是一個表達式,所以它可以直接作為list和dict的成員

list_a = [lambda a: a**3, lambda b: b**3]
print(type(list_a[0]))

結果為:

與map函數進行使用

a = map(lambda x:x**2,range(5))
print(list(a))

結果為:

補充:一個爭議

事實上,關于lambda在Python社區是存在爭議的。Python程序員對于到底要不要使用lambda意見不一致。

  • 支持方認為使用lambda編寫的代碼更緊湊,更“pythonic”。
  • 反對方認為,lambda函數能夠支持的功能十分有限,其不支持多分支程序if...elif...else...和異常處理程序try ...except...。并且,lambda函數的功能被隱藏,對于編寫代碼之外的人員來說,理解lambda代碼需要耗費一定的理解成本。他們認為,使用for循環等來替代lambda是一種更加直白的編碼風格。

關于lambda的爭執沒有定論。在實際中,是否使用lambda編程取決于程序員的個人喜好。

總結

lambda函數使代碼結構更加緊湊,但卻使代碼看起來不是那么清晰。

參考資料

https://zhuanlan.zhihu.com/p/80960485

原文鏈接:https://blog.csdn.net/weixin_48077303/article/details/115432398

欄目分類
最近更新