目錄
- 一.Python 匿名函數(shù) lambda 語法
- 二.Python 匿名函數(shù) lambda 調(diào)用
- 三.Python 匿名函數(shù) lambda 重點(diǎn)總結(jié):
- 四.猜你喜歡
零基礎(chǔ) Python 學(xué)習(xí)路線推薦 : Python 學(xué)習(xí)目錄 >> Python 基礎(chǔ)入門
在 Python 開發(fā)中常規(guī)的函數(shù)在調(diào)用之前都需要先聲明,而 Python 匿名函數(shù)担锤,有速寫函數(shù)的功能并且匿名函數(shù)不需要聲明也沒有函數(shù)名字挤庇,完全不需要擔(dān)心函數(shù)名沖突智听,具體的妙用還需要從實(shí)戰(zhàn)練習(xí)中多多積累經(jīng)驗(yàn)奄喂。
一.Python 匿名函數(shù) lambda 語法
lambda a,b,c:expression
1.匿名函數(shù)有關(guān)鍵字 lambda 修飾;
2.匿名函數(shù)冒號(hào) : 之前的是函數(shù)的參數(shù)我磁,匿名函數(shù)可以是無參匿名函數(shù)谍夭,也可以是帶參匿名函數(shù);
3.匿名函數(shù)冒號(hào) : 之后是表達(dá)式氓润,匿名函數(shù)不需要寫 return,表達(dá)式的結(jié)果就是返回值;
# !usr/bin/env python
# -_- coding:utf-8 \__-
"""
@Author:猿說編程
@Blog(個(gè)人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里屋厘,不積小流無以成江海涕烧,程序人生的精彩需要堅(jiān)持不懈地積累!
"""
#不帶參數(shù)的普通函數(shù)
def sing_dog():
return True #不帶參數(shù)的匿名函數(shù)
f0 = lambda :True # 無參的匿名函數(shù)汗洒,在匿名函數(shù)的冒號(hào)前面無需寫參數(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ù)對(duì)比之下,明顯能感覺到匿名函數(shù)的使用能讓代碼更加簡潔仲翎,當(dāng)然匿名函數(shù)使用場景適用于比較簡單的需求痹扇,對(duì)于復(fù)雜的計(jì)算,匿名函數(shù)是無法完成的溯香;
其次鲫构,無參的匿名函數(shù),在匿名函數(shù)的冒號(hào)前面無需寫參數(shù)玫坛;
二.Python 匿名函數(shù) lambda 調(diào)用
1.lambda 匿名函數(shù)常規(guī)使用
假如有這樣一個(gè)需求:傳入一個(gè)字符串结笨,對(duì)字符串根據(jù)空格拆分,并以字符串的形式返回拆分后的結(jié)果,示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個(gè)人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里炕吸,不積小流無以成江海伐憾,程序人生的精彩需要堅(jiān)持不懈地積累!
"""
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
'''
如果對(duì)字符串轉(zhuǎn)換不太熟悉的童鞋請(qǐng)參考:字符串/列表/元組/字典之間的相互轉(zhuǎn)換
2. lambda 匿名函數(shù)使用不定長參數(shù)
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個(gè)人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里赫模,不積小流無以成江海树肃,程序人生的精彩需要堅(jiān)持不懈地積累!
"""
# 匿名函數(shù):通過條件表達(dá)式瀑罗,返回最大值
f0 = lambda x,y: x if x> y else y
print(f0(5,10))
# 匿名函數(shù):求三個(gè)參數(shù)的乘積
f1 = lambda x,y,z: x*y*z
print(f1(1,2,3))
# 缺省的匿名函數(shù)
f2 = lambda x,y=2: x+y #使用了默認(rèn)值
print(f2(10)) #第二個(gè)參數(shù)為缺省參數(shù)胸嘴,使用默認(rèn)值2
# 不定長參數(shù)的匿名函數(shù)
f3 = lambda *z:z #*z返回的是一個(gè)元祖
print(f3('hello',False))
# 不定長參數(shù)的匿名函數(shù)
f4 = lambda **Arg: Arg #arg返回的是一個(gè)字典
print(f4(a=1,b=2,k="hello"))
'''
輸出結(jié)果:
10
6
12
('hello', False)
{'a': 1, 'b': 2, 'k': 'hello'}
'''
如果對(duì) Python 不定長參數(shù)*argc,**kargcs 不太熟悉的話,可以在看一遍這篇文章:Python 函數(shù)不定長參數(shù) *argc,**kargcs
3. lambda 匿名函數(shù)作為參數(shù)使用
其實(shí)匿名函數(shù)作為函數(shù)參數(shù)傳參和普通函數(shù)傳參沒什么區(qū)別斩祭,示例代碼如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個(gè)人博客地址): www.codersrc.com
@File:Python 匿名函數(shù) lambda.py
@Time:2021/04/11 09:00
@Motto:不積跬步無以至千里劣像,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累摧玫!
"""
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 重點(diǎn)總結(jié):
- 1.匿名函數(shù)可以是無參匿名函數(shù)也可以是有參匿名函數(shù);
- 2.匿名函數(shù)不僅可以直接當(dāng)作函數(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ā)布诬像!