python lanbda匿名函數(20)

    在python開發中常規的函數在調用以前都須要先聲明,而python還有一種匿名函數,有速寫函數的功能而且匿名函數不須要聲明也沒有函數名字,徹底不須要擔憂函數名衝突,具體的妙用還須要從實戰練習中多多積累經驗。python

寫代碼

一.匿名函數語法:

lambda a,b,c:expression

 

    匿名函數有如下幾個特色:git

    1.匿名函數有關鍵字 lambda 修飾;github

    2.匿名函數冒號 : 以前的是函數的參數,匿名函數能夠是無參匿名函數,也能夠是帶參匿名函數;express

    3.匿名函數冒號 : 以後是表達式,匿名函數不須要寫 return,表達式的結果就是返回值;微信

# !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:不積跬步無以致千里,不積小流無以成江海,程序人生的精彩須要堅持不懈地積累! """
 
#不帶參數的普通函數
def sing_dog(): return True #不帶參數的匿名函數
f0 = lambda :True # 無參的匿名函數,在匿名函數的冒號前面無需寫參數
print(sing_dog()) print(f0()) print("***"*20) #帶參數的普通函數
def sub(a,b): return a - b def add(a,b): return a + b #帶參數的匿名函數
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))

 

     輸出結果:函數

True True ************************************************************
2
6
2
6

 

    首先,匿名函數和普通函數對比之下,明顯能感受到匿名函數的使用能讓代碼更加簡潔,固然匿名函數使用場景適用於比較簡單的需求,對於複雜的計算,匿名函數是沒法完成的;spa

其次,無參的匿名函數,在匿名函數的冒號前面無需寫參數;code

複製粘貼

二.匿名函數調用:

    1.匿名函數常規使用

    假若有這樣一個需求:傳入一個字符串,對字符串根據空格拆分,並以字符串的形式返回拆分後的結果,示例代碼以下:blog

str1 = "laowang is sing_dog "
 
#普通函數
def get_str(str1): # 1.將字符串拆分爲列表
    list1 = str1.split(" ") # 2.將列表轉爲字符串並返回字符串
    return "".join(list1) # 將1/2兩步合併爲一步完成
    # return "".join(str1.split(" "))
 
print("打印原始字符串:",str1) print("調用普通函數獲取字符串拆分結果:",get_str(str1)) #匿名函數
f0 = lambda a:"".join(a.split(" ")) print("調用匿名函數獲取字符串拆分結果:",f0(str1))

 

    輸出結果:教程

打印原始字符串: laowang is sing_dog 調用普通函數獲取字符串拆分結果: laowangissing_dog 調用匿名函數獲取字符串拆分結果: laowangissing_dog

 

    若是對字符串轉換不太熟悉的童鞋請參考:字符串/列表/元組/字典之間的相互轉換

 

     2.匿名函數使用不定長參數

# 匿名函數:經過條件表達式,返回最大值
f0 = lambda x,y: x if x> y else y print(f0(5,10)) # 匿名函數:求三個參數的乘積
f1 = lambda x,y,z: x*y*z print(f1(1,2,3)) # 缺省的匿名函數
f2 = lambda x,y=2: x+y #使用了默認值
print(f2(10)) #第二個參數爲缺省參數,使用默認值2
 
# 不定長參數的匿名函數
f3 = lambda *z:z #*z返回的是一個元祖
print(f3('hello',False)) # 不定長參數的匿名函數
f4 = lambda **Arg: Arg #arg返回的是一個字典
print(f4(a=1,b=2,k="hello"))

 

    輸出結果:

    若是對python不定長參數*argc,**kargcs 不太熟悉的話,能夠在看一遍這篇文章:python函數不定長參數 *argc,**kargcs

 

3.匿名函數做爲參數使用

    其實匿名函數做爲函數參數傳參和普通函數傳參沒什麼區別,示例代碼以下:

 

能用就行

三.重點總結:

     1.匿名函數能夠是無參匿名函數也能夠是有參匿名函數;

     2.匿名函數不只能夠直接看成函數調用,還能直接做爲函數中的參數直接使用;

 

 

猜你喜歡:

    1.python函數聲明和調用

    2.python字典推導式

    3.python列表推導式

    4.python函數不定長參數 *argc,**kargcs

 

    轉載請註明:猿說Python » python匿名函數

 

技術交流、商務合做請直接聯繫博主
掃碼或搜索:猿說python
python教程公衆號
猿說python
微信公衆號 掃一掃關注
相關文章
相關標籤/搜索