Python 匿名函數(shù) lambda - Python零基礎(chǔ)入門教程

目錄

零基礎(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ù)直接使用;

四.猜你喜歡

  1. Python 字符串/列表/元組/字典之間的相互轉(zhuǎn)換
  2. Python 局部變量和全局變量
  3. Python type 函數(shù)和 isinstance 函數(shù)區(qū)別
  4. Python is 和 == 區(qū)別
  5. Python 可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型
  6. Python 淺拷貝和深拷貝
  7. Python 遞歸函數(shù)
  8. Python sys 模塊
  9. Python 列表 list
  10. Python 元組 tuple
  11. Python 字典 dict
  12. Python 條件推導(dǎo)式
  13. Python 列表推導(dǎo)式
  14. Python 字典推導(dǎo)式
  15. Python 函數(shù)聲明和調(diào)用
  16. Python 不定長參數(shù) *argc/**kargcs

未經(jīng)允許不得轉(zhuǎn)載:猿說編程 ? Python 匿名函數(shù) lambda

本文由博客 - 猿說編程 猿說編程 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容