目錄
- 一.Python 匿名函數(shù) lambda 語法
- 二.Python 匿名函數(shù) lambda 調(diào)用
- 三.Python 匿名函數(shù) lambda 重點總結(jié):
- 四.猜你喜歡
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : Python 學(xué)習(xí)目錄 >> Python 基礎(chǔ)入門
在 Python 開發(fā)中常規(guī)的函數(shù)在調(diào)用之前都需要先聲明,而 Python 匿名函數(shù),有速寫函數(shù)的功能并且匿名函數(shù)不需要聲明也沒有函數(shù)名字,完全不需要擔(dān)心函數(shù)名沖突,具體的妙用還需要從實戰(zhàn)練習(xí)中多多積累經(jīng)驗。

一.Python 匿名函數(shù) lambda 語法
lambda a,b,c:expression
1.匿名函數(shù)有關(guān)鍵字 lambda 修飾;
2.匿名函數(shù)冒號 : 之前的是函數(shù)的參數(shù),匿名函數(shù)可以是無參匿名函數(shù),也可以是帶參匿名函數(shù);
3.匿名函數(shù)冒號 : 之后是表達式,匿名函數(shù)不需要寫 return,表達式的結(jié)果就是返回值;
# !usr/bin/env python
# -_- coding:utf-8 \__-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
#不帶參數(shù)的普通函數(shù)
def sing_dog():
return True #不帶參數(shù)的匿名函數(shù)
f0 = lambda :True # 無參的匿名函數(shù),在匿名函數(shù)的冒號前面無需寫參數(shù)
print(sing_dog())
print(f0())
print("*\*\*"*20)
#帶參數(shù)的普通函數(shù)
def sub(a,b):
return a - b
def add(a,b):
return a + b
#帶參數(shù)的匿名函數(shù)
f1 = lambda a,b:a-b
f2 = lambda a,b:a+b
print(sub(4,2))
print(add(4,2))
print(f1(4,2))
print(f2(4,2))
'''
輸出結(jié)果:
True
True
2
6
2
6
'''
首先,匿名函數(shù)和普通函數(shù)對比之下,明顯能感覺到匿名函數(shù)的使用能讓代碼更加簡潔,當然匿名函數(shù)使用場景適用于比較簡單的需求,對于復(fù)雜的計算,匿名函數(shù)是無法完成的;
其次,無參的匿名函數(shù),在匿名函數(shù)的冒號前面無需寫參數(shù);
二.Python 匿名函數(shù) lambda 調(diào)用
1.lambda 匿名函數(shù)常規(guī)使用
假如有這樣一個需求:傳入一個字符串,對字符串根據(jù)空格拆分,并以字符串的形式返回拆分后的結(jié)果,示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
str1 = "laowang is sing_dog "
#普通函數(shù)
def get_str(str1):
# 1.將字符串拆分為列表
list1 = str1.split(" ")
# 2.將列表轉(zhuǎn)為字符串并返回字符串
return "".join(list1)
# 將1/2兩步合并為一步完成
# return "".join(str1.split(" "))
print("打印原始字符串:",str1)
print("調(diào)用普通函數(shù)獲取字符串拆分結(jié)果:",get_str(str1))
#匿名函數(shù)
f0 = lambda a:"".join(a.split(" "))
print("調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果:",f0(str1))
'''
輸出結(jié)果:
打印原始字符串: laowang is sing_dog
調(diào)用普通函數(shù)獲取字符串拆分結(jié)果: laowangissing_dog
調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果: laowangissing_dog
'''
如果對字符串轉(zhuǎn)換不太熟悉的童鞋請參考:字符串/列表/元組/字典之間的相互轉(zhuǎn)換
2. lambda 匿名函數(shù)使用不定長參數(shù)
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
# 匿名函數(shù):通過條件表達式,返回最大值
f0 = lambda x,y: x if x> y else y
print(f0(5,10))
# 匿名函數(shù):求三個參數(shù)的乘積
f1 = lambda x,y,z: x*y*z
print(f1(1,2,3))
# 缺省的匿名函數(shù)
f2 = lambda x,y=2: x+y #使用了默認值
print(f2(10)) #第二個參數(shù)為缺省參數(shù),使用默認值2
# 不定長參數(shù)的匿名函數(shù)
f3 = lambda *z:z #*z返回的是一個元祖
print(f3('hello',False))
# 不定長參數(shù)的匿名函數(shù)
f4 = lambda **Arg: Arg #arg返回的是一個字典
print(f4(a=1,b=2,k="hello"))
'''
輸出結(jié)果:
10
6
12
('hello', False)
{'a': 1, 'b': 2, 'k': 'hello'}
'''
如果對 Python 不定長參數(shù)*argc,**kargcs 不太熟悉的話,可以在看一遍這篇文章:Python 函數(shù)不定長參數(shù) *argc,**kargcs
3. lambda 匿名函數(shù)作為參數(shù)使用
其實匿名函數(shù)作為函數(shù)參數(shù)傳參和普通函數(shù)傳參沒什么區(qū)別,示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
"""
def function1(a,b,):
return a if a>b else b #返回最大值
# 1.定義匿名函數(shù)
f0 = lambda b:b*10
# 2.匿名函數(shù)作為參數(shù),調(diào)用普通函數(shù)
function1(100,f0(5))
# 上面兩行代碼合并為一行
function1(100 , (lambda b:b*10)(5))

]
三.Python 匿名函數(shù) lambda 重點總結(jié):
- 1.匿名函數(shù)可以是無參匿名函數(shù)也可以是有參匿名函數(shù);
- 2.匿名函數(shù)不僅可以直接當作函數(shù)調(diào)用,還能直接作為函數(shù)中的參數(shù)直接使用;
四.猜你喜歡
- Python 字符串/列表/元組/字典之間的相互轉(zhuǎn)換
- Python 局部變量和全局變量
- Python type 函數(shù)和 isinstance 函數(shù)區(qū)別
- Python is 和 == 區(qū)別
- Python 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
- Python 淺拷貝和深拷貝
- Python 遞歸函數(shù)
- Python sys 模塊
- Python 列表 list
- Python 元組 tuple
- Python 字典 dict
- Python 條件推導(dǎo)式
- Python 列表推導(dǎo)式
- Python 字典推導(dǎo)式
- Python 函數(shù)聲明和調(diào)用
- Python 不定長參數(shù) *argc/**kargcs
未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? Python 匿名函數(shù) lambda
本文由博客 - 猿說編程 猿說編程 發(fā)布!