網站首頁 編程語言 正文
在Python中,不通過def來聲明函數名字,而是通過lambda關鍵字來定義的函數稱為匿名函數
關鍵字lambda表示匿名函數
語法
lambda 參數:表達式
先寫lambda關鍵字,然后依次寫匿名函數的參數,多個參數中間用逗號連接,然后是一個冒號,冒號后面寫返回的表達式
lambda函數比普通函數更簡潔
匿名函數有個好處:函數沒有名字,不必擔心函數名沖突
匿名函數與普通函數的對比 :
def sum_func(a, b, c): return a + b + c sum_lambda = lambda a, b, c: a + b + c print(sum_func(1, 10, 100)) # 111 print(sum_lambda(1, 10, 100)) # 111
可以看到,lambda適用于多個參數、一個返回值的情況(匿名函數有個限制,就是只能有一個表達式,不用寫return,返回值就是該表達式的結果),可以用一個變量來接收,變量是一個函數對象,執行這個函數對象的結果與執行一個普通函數的結果是一樣的
匿名函數的多種形式:
#無參數 lambda_a = lambda: 100 print(lambda_a()) # 100 #一個參數 lambda_b = lambda num: num * 10 print(lambda_b(5)) # 50 #多個參數 lambda_c = lambda a, b, c, d : a + b + c + d print(lambda_c(1,2,3,4)) # 10 #表達式分支 lambda_d = lambda x: x if x % 2 == 0 else x + 1 print(lambda_d(6)) # 6 print(lambda_d(7)) # 8
可以看到,lambda的參數可以0個到多個,并且返回的表達式可以是一個復雜的表達式,只要最后的值是一個值就行了
此外,匿名函數也是一個函數對象,也可以把匿名函數賦值給一個變量,再利用變量來調用該函數:
f = lambda x: x * x print(f) # <function <lambda> at 0x00000253B601B598> print(f(5)) # 25
lambda作為一個參數傳遞
def sub_func(a, b, func): print('a =', a) print('b =', b) print('a - b =',func(a, b)) sub_func(100, 1, lambda a, b: a - b) #a = 100 #b = 1 #a - b = 99
lambda作為函數的返回值
def func(a, b): return lambda c: a + b + c return_func = func(1, 10) print(return_func) # <function func.<locals>.<lambda> at 0x00000253B6472D90> print(return_func(100)) # 111
匿名函數可以作為一個函數的返回值
在上面的代碼中,func返回的是一個匿名函數,返回的是一個函數對象,當我們執行這個函數時,可以得到lambda函數的結果
注意:其中的a,b兩個參數是func中的參數,但我們執行返回的函數return_func時,已經不在func的作用域內了,而lambda函數仍然能使用a,b參數,說明lambda函數會將它的運行環境保存一份,一直保留到它自己執行的時候使用
原文鏈接:https://blog.csdn.net/Hudas/article/details/122850338
相關推薦
- 2022-09-05 Redis 數據刪除策略
- 2022-08-10 C#并行編程Task類用法介紹_C#教程
- 2022-07-11 Python內建類型bytes深入理解_python
- 2023-01-01 一文帶你弄懂Python3中的def?__init___python
- 2022-07-15 Sql?Server存儲過程詳解_MsSql
- 2022-03-30 SQL基礎查詢和LINQ集成化查詢_MsSql
- 2022-08-01 詳解Selenium中元素定位方式_python
- 2023-01-10 Qt實現可以計算大數的簡單計算器_C 語言
- 最近更新
-
- 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同步修改后的遠程分支