python入門基礎之lambda匿名函數詳解

2021-01-07 碼不完的代碼

python入門基礎之lambda匿名函數詳解

剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數

我從一下幾個方面來介紹lambda:

1、lambda簡介

2、lambda與def不同之處

3、lambda的使用方法

1、lambda簡介

先來看一段代碼示例:

第一行是lambda聲明,x,y相當於傳入的參數,整個函數會返回x+y的值。lambda作為一個表達式,定義了一個匿名函數,上例的代碼x,y為入口參數,x+y為函數體。在這裡lambda簡化了函數定義的書寫形式。

python允許用lambda關鍵字創造匿名函數。匿名是不需要以標準的方式來聲明,比如說使用 def 語句。(除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字,上面的例子中會創建名字。)

作為函數,它們也能有參數。一個完整的 lambda"語句"代表了一個表達式,這個表達式的定義體必須和聲明放在同一行。語法如下:

lambda [arg1[, arg2, ... argN]]: expression

參數是可選的,如果使用的參數話,參數通常也是表達式的一部分

2、lambda匿名函數與def區別

lambda 和def它兩個的基本用法差不多,參數都是可選,也都會返回對象

如下:

不同之處:

lambda可以定義一個匿名函數,而def定義的函數必須有一個名字。這應該是lambda與def兩者最大的區別。

lambda是一個表達式,而不是一個語句(lambda is an expression, not a statement.)因此,lambda能夠出現在Python語法不允許def出現的地方——例如,在一個列表常量中或者函數調用的參數中。

lambda的主體是一個單個的表達式,而不是一個代碼塊。(lambda's body is a single expression, not a block of statements.),lambda裡面的語句相當於def中return中的代碼一樣。只能是簡單的表達式,所以說lambda的能力小於def,在lambda中只能使用簡單的語法,不能使用if else while return等語句

它的設計理念為:lambda是一個為編寫簡單的函數而設計的,而def用來處理更大的任務。(lambda is designed for coding simple functions, and def handles larger tasks.)

3、lambda的使用

為什麼要使用lambda?

1、lambda函數主要用來寫一些小體量的一次性函數,避免汙染環境,同時也能簡化代碼。

2、lambda起到了一種函數速寫的作用,允許在使用的代碼內嵌入一個函數的定義。他們完全是可選的(你總是能夠使用def來替代它們),但是你僅需要嵌入小段可執行代碼的情況下它們會帶來一個更簡潔的代碼結構。

例如:

map( lambda x: x*x, [y for y in range(10)] )

這個寫法要好過

def sq(x):

return x * x

map(sq, [y for y in range(10)])

3、lambda使用可以加參數也可以不加參數

有參數就如同上面的用法

無參數:

4、lambda通常用來編寫跳轉表(jump table),也就是行為的列表或字典,能夠按照需要執行相應的動作。如下段代碼所示。

總結:

1、lambda只是一個表達式,函數體比def簡單很多

2、lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去

3、lambda函數擁有自己的名字空間,且不能訪問自有參數列表之外或全局名字空間裡的參數

4、 簡單單行代碼或者一次性的函數可以用lambda函數來書寫,可以讓代碼更簡潔。

5、 對於複雜函數或者函數體體量大的函數,最好不要用lambda函數,會增加代碼的閱讀難度,使代碼晦澀難懂。

6、 在非多次調用的函數的情況下,lambda表達式即用既得,提高性能

碼字不易,多多關照

相關焦點

  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda表達式介紹python中有一種靈活,便捷的且具有函數功能的表達式:lambda表達式!lambda表達式,又稱匿名函數,是現代各種程式語言爭相引入的一種語法,其功能堪比函數,設計卻比函數簡潔。
  • python之lambda函數使用
    一,lambda函數的概念lambda函數被稱為匿名函數,實際就是說沒有名稱的函數,形式如下:
  • Python匿名函數:Lambda表達式
    我們以一張圖形進入主題:從圖中我們可以看出lambda表達式幾點特徵:簡潔性,符合了Python的一貫宗旨;起到了函數的作用,但未顯示函數名稱,這就是匿名函數;有形參;有返回值的。【2】Lambda表達式如何實現函數功能?
  • 詳細講解:python中的lambda與sorted函數
    本文內容主要介紹了python中的lambda與sorted函數的相關資料,幫助大家更好的理解和學習python,感興趣的朋友可以了解下!!!
  • Python中的lambda函數
    Python中的lambda函數在Python中,我們使用lambda關鍵字來聲明一個匿名函數
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • Python中的4個Lambda函數示例
    翻譯:老齊與本文相關的圖書推薦:《跟老齊學Python:輕鬆入門》Lambda函數式Python裡的匿名函數,有時候提到匿名函數,就是指Lambda函數,其基本語法是:lambda parameters: expression。這裡用lambda關鍵詞標記我們要定義一個Lambda函數,然後是參數列表,參數的個數可以是0個,或者多個。後面是冒號(英文狀態下),然後就是Lambda函數中的表達式。
  • Python入門基礎中怎麼定義函數,函數調用,函數傳遞參數
    什麼是函數和為什麼要用函數?函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重複利用率。已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。如果不用函數,會怎麼樣?如果沒有函數,代碼就會從上往下執行全部執行。
  • Python中Lambda的前4個錯誤
    如此之多,以至於許多Python程式設計師都想儘可能地使用它們。當然,lambda具有使我們的代碼簡潔的優勢,但是在項目中過度使用它們會導致濫用,從而降低我們代碼的可讀性和可維護性。在開始研究這些誤用是什麼之前,讓我們先快速回顧一下lambda。如果您對它們非常了解,則可以跳到下一部分。
  • Python lambda: 從入門到放棄
    去年3月份寫過一篇關於Python lambda的技術文章,雖然在公眾號上閱讀量平平,但是轉載到CSDN博客之後卻火了。累計閱讀量已經接近15萬,並且每天都在持續增加。許多同學也是看了這篇文章才關注我的公眾號或加我好友的。在文章中,我對Python匿名函數lambda作了"一個語法,三個特性,四個用法"的總結。
  • 【Python基礎】Python 函數使用總結
    ,目錄結構:Python 函數專題基礎部分1 函數組成2 引用傳參3 默認參數與關鍵字參數4 可變參數5 內置函數進階部分6 偏函數7 遞歸函數8 匿名函數9 高階函數10 嵌套函數總結使用遞歸函數需要注意找到正確的遞歸基,防止陷入無限遞歸。更多使用遞歸的例子大家可參考此公眾號之前推送。8 匿名函數匿名函數是指使用lambda關鍵字創建的函數。
  • 如何入門Python之Python基礎教程詳解
    隨著人工智慧的發展,Python近兩年也是大火,越來越多的人加入到Python學習大軍,對於毫無基礎的人該如何入門Python呢?這裡整理了一些個人經驗和Python入門教程供大家參考。如果你是零基礎入門 Python 的話,建議初學者至少達到兩個目標: 會用,理解。
  • 十九、深入Python匿名函數
    作者丨小sen來源丨Python之王「@Author:Runsen」匿名函數是沒有函數聲明def的函數,用lambda關鍵字定義的函數。匿名函數的定義方式也和普通函數不一樣,代碼比較簡潔。匿名函數匿名函數不需要顯示地定義函數名,使用【lambda + 參數 +表達式】的方式lambda 函數比如,將最簡單的平方函數改造成匿名函數# lambda x : x * x 實際上就是def f(x):
  • Python中lambda的使用,與它的三個好基友介紹!
    很多朋友說,python入門有推薦的書嗎?其實遇到這種問題,會比較難回答,因為如果一心想學python,現在網絡那麼發達,怎麼都能找到資料學。當然你要真讓我推薦一本書,我還是想說《python學習手冊第四版》,這本書乍一看突出一個厚字,但內容講的是真的很細緻!如果你不知道python學哪本書,還是推薦你看看它。大家可以從我公眾號底部的領取福利中,找到這本書。
  • Python基礎應用:map與reduce
    從運行效率的角度講,map()等其他python內置函數是效率最高的,其次是列表解析,再次是生成器和for循環,while循環最慢。Python基礎應用之匿名函數# 匿名函數實現的功能是返回傳入參數的平方# map()函數實現的功能是將平方運算映射到列表 l 的每一項上# Python3 以後map()函數的返回值是一個map對象,使用list()函數將map對象轉化為list對象可以看到具體輸出結果l_sqr = map(lambda x: x**2, l)print('l_sqr:
  • 白話 Python 的函數式編程
    Python 主要提供了這麼幾個函數 Map, Filter 和 Reduce,通常結合匿名函數 lambda 一起使用,我逐一介紹一下:對於 Map(function, iterable) 函數,前面的例子提過,他表示對 iterable 中的每個元素運用 function 這個函數,最後返回一個新的可遍歷的集合,比如上面對列表中每個元素乘2用map可以表示為
  • 通過「四不要」,掌握 Python 的 Lambda 函數
    譯文出自:掘金翻譯計劃本文永久連結:https://github.com/xitu/gold-miner/blob/master/article/2020/master-python-lambda-functions-with-these-4-donts.md譯者:loststar  校對者:luochen1992Lambda 函數是 Python
  • Python3 基礎快速入門(函數)
    ● 函數注釋文檔 def 聲明函數func 為函數名在函數執行體內可以實現具體的邏輯運算。但是,有些時候我們需要更改指定位置的默認參數值,例如:# 定義一個人員函數 需要傳入username,age默認為10,hobby默認為pythondef person(username, age=10, hobby='python'):    print("大家好,我的名字是{0},今年{1}歲,我對{2}很感興趣".format(username
  • 「數據清洗」lambda表達式配合使用的四種函數
    標籤:數據清洗、pythonlambda表達式配合使用的四種函數一、什麼是lambda表達式基本特性使用方法filter函數map函數sorted函數reduce函數總結什麼是lambda表達式>lambda 表達式是一個匿名函數,lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象,是一個匿名函數,即沒有函數名的函數。
  • Lambda詳解->C+&py
    總的來說可以把lambda表達式理解為一種方便的自定義函數。                         壹     lambda的語法格式:[capture](parameters) mutable ->return-type{statement}1、空。