網站首頁 編程語言 正文
最近碰見太多次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
相關推薦
- 2022-01-06 ruoyi中生成的代碼表單,如果添加上傳功能-模板下載功能
- 2022-06-01 Kubernetes(K8S)入門基礎內容介紹_云和虛擬化
- 2023-06-16 GO語言中Chan實現原理的示例詳解_Golang
- 2022-04-18 C#線程中彈窗的制作方法_C#教程
- 2022-12-21 Python中的取整、取余運算方法_python
- 2022-11-18 Nginx中rewrite(地址重定向)的深入剖析_nginx
- 2022-09-10 ELK收集Tomcat日志的實現_Tomcat
- 2022-01-10 解決遮罩下方元素禁止滾動
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支