python匿名函數(shù)lambda(20)

在python開發(fā)中常規(guī)的函數(shù)在調(diào)用之前都需要先聲明,而python還有一種匿名函數(shù),有速寫函數(shù)的功能并且匿名函數(shù)不需要聲明也沒有函數(shù)名字,完全不需要擔(dān)心函數(shù)名沖突,具體的妙用還需要從實戰(zhàn)練習(xí)中多多積累經(jīng)驗。

翁牛特網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,翁牛特網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為翁牛特數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的翁牛特做網(wǎng)站的公司定做!

python 匿名函數(shù)lambda(20)

一.匿名函數(shù)語法:

1

lambdaa,b,c:expression

匿名函數(shù)有以下幾個特點:

1.匿名函數(shù)有關(guān)鍵字?lambda?修飾;

2.匿名函數(shù)冒號?:?之前的是函數(shù)的參數(shù),匿名函數(shù)可以是無參匿名函數(shù),也可以是帶參匿名函數(shù);

3.匿名函數(shù)冒號?:?之后是表達式,匿名函數(shù)不需要寫?return,表達式的結(jié)果就是返回值;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解憂

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Github:www.github.com

@File:python_lambda.py

@Time:2019/10/5 17:48

?

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

"""

?

#不帶參數(shù)的普通函數(shù)

defsing_dog():

????returnTrue

#不帶參數(shù)的匿名函數(shù)

f0=lambda:True# 無參的匿名函數(shù),在匿名函數(shù)的冒號前面無需寫參數(shù)

print(sing_dog())

print(f0())

?

print("***"*20)

?

#帶參數(shù)的普通函數(shù)

defsub(a,b):

????returna-b

defadd(a,b):

????returna+b

?

#帶參數(shù)的匿名函數(shù)

f1=lambdaa,b:a-b

f2=lambdaa,b:a+b

?

print(sub(4,2))

print(add(4,2))

print(f1(4,2))

print(f2(4,2))

輸出結(jié)果:

1

2

3

4

5

6

7

True

True

************************************************************

2

6

2

6

首先,匿名函數(shù)和普通函數(shù)對比之下,明顯能感覺到匿名函數(shù)的使用能讓代碼更加簡潔,當(dāng)然匿名函數(shù)使用場景適用于比較簡單的需求,對于復(fù)雜的計算,匿名函數(shù)是無法完成的;

其次,無參的匿名函數(shù),在匿名函數(shù)的冒號前面無需寫參數(shù);

python 匿名函數(shù)lambda(20)

二.匿名函數(shù)調(diào)用:

1.匿名函數(shù)常規(guī)使用

假如有這樣一個需求:傳入一個字符串,對字符串根據(jù)空格拆分,并以字符串的形式返回拆分后的結(jié)果,示例代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

str1="laowang is sing_dog "

?

#普通函數(shù)

defget_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=lambdaa:"".join(a.split(" "))

print("調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果:",f0(str1))

輸出結(jié)果:

1

2

3

打印原始字符串:laowangissing_dog

調(diào)用普通函數(shù)獲取字符串拆分結(jié)果:laowangissing_dog

調(diào)用匿名函數(shù)獲取字符串拆分結(jié)果:laowangissing_dog

如果對字符串轉(zhuǎn)換不太熟悉的童鞋請參考:字符串/列表/元組/字典之間的相互轉(zhuǎn)換

?

2.匿名函數(shù)使用不定長參數(shù)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# 匿名函數(shù):通過條件表達式,返回最大值

f0=lambdax,y:xifx>yelsey

print(f0(5,10))

?

# 匿名函數(shù):求三個參數(shù)的乘積

f1=lambdax,y,z:x*y*z

print(f1(1,2,3))

?

# 缺省的匿名函數(shù)

f2=lambdax,y=2:x+y#使用了默認(rèn)值

print(f2(10))#第二個參數(shù)為缺省參數(shù),使用默認(rèn)值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é)果:

1

2

3

4

5

10

6

12

('hello',False)

{'a':1,'b':2,'k':'hello'}

如果對python不定長參數(shù)*argc,**kargcs 不太熟悉的話,可以在看一遍這篇文章:python函數(shù)不定長參數(shù) *argc,**kargcs

?

3.匿名函數(shù)作為參數(shù)使用

其實匿名函數(shù)作為函數(shù)參數(shù)傳參和普通函數(shù)傳參沒什么區(qū)別,示例代碼如下:

1

2

3

4

5

6

7

8

9

10

deffunction1(a,b,):

????returnaifa>belseb#返回最大值

?

# 1.定義匿名函數(shù)

f0=lambdab:b*10

# 2.匿名函數(shù)作為參數(shù),調(diào)用普通函數(shù)

function1(100,f0(5))

?

# 上面兩行代碼合并為一行

function1(100,(lambdab:b*10)(5))

?

python 匿名函數(shù)lambda(20)

三.重點總結(jié):

1.匿名函數(shù)可以是無參匿名函數(shù)也可以是有參匿名函數(shù);

2.匿名函數(shù)不僅可以直接當(dāng)作函數(shù)調(diào)用,還能直接作為函數(shù)中的參數(shù)直接使用;

?

?

猜你喜歡:

1.python函數(shù)聲明和調(diào)用

2.python字典推導(dǎo)式

3.python列表推導(dǎo)式

4.python函數(shù)不定長參數(shù) *argc,**kargcs

?

轉(zhuǎn)載請注明:猿說Python???python匿名函數(shù)

?

網(wǎng)站題目:python匿名函數(shù)lambda(20)
地址分享:http://bm7419.com/article14/psogge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈ChatGPT、網(wǎng)站建設(shè)網(wǎng)頁設(shè)計公司、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計