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

2020-12-03 碼不完的代碼

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表達式,又稱匿名函數,是現代各種程式語言爭相引入的一種語法,其功能堪比函數,設計卻比函數簡潔。lambda 表達式的本質是匿名的、單行函數體的函數,故lambda 表達式可以寫成函數的形式。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • Python零基礎入門教程,如何使用lambda、filter和map函數?
    大綱函數類型定義及特性lambda函數定義及使用filter函數定義及使用map函數定義及使用引入函數類型概念函數類型定義:python中任意一個函數都有數據類型,這種數據類型是function(函數類型)
  • Python匿名函數:Lambda表達式
    我們以一張圖形進入主題:從圖中我們可以看出lambda表達式幾點特徵:簡潔性,符合了Python的一貫宗旨;起到了函數的作用,但未顯示函數名稱,這就是匿名函數;【2】Lambda表達式如何實現函數功能?
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • 「數據清洗」lambda表達式配合使用的四種函數
    標籤:數據清洗、pythonlambda表達式配合使用的四種函數一、什麼是lambda表達式基本特性使用方法filter函數map函數sorted函數reduce函數總結什麼是lambda表達式>lambda 表達式是一個匿名函數,lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象,是一個匿名函數,即沒有函數名的函數。
  • python入門教程NO.8 用python寫個存款利息計算器
    本文涉及的python基礎語法為def函數,return,函數的各參數示例,匿名函數等函數初識函數是一段組織好的\ 可重複使用的\ 用來實現特定功能的代碼塊。自定義函數定義一個自定義函數需要遵循以下的規則:函數代碼塊以def 關鍵字開頭,後接函數標識符名稱和圓括號():def 是函數定義的關鍵字(define 的縮寫),example是我們自定義的一個函數名稱,括號裡面的x表示一個參數這裡提醒一下各位新手工程獅,千萬不要忘記括號後面這個英文 :!
  • Lambda表達式在Python事件中的運用
    本篇筆記內容:Lambda表達式詳解Lambda表達式在事件中的應用【1】Lambda表達式詳解lambda 表達式定義的是一個匿名函數,只適合簡單輸入參數,簡單計算返回結果,不適合功能複雜情況。lambda 定義的匿名函數也有輸入、也有輸出,只是沒有名字。語法格式如下:lambda 參數值列表:表達式其中,參數值列表即為輸入,表達式計算的結構即為輸出。看一個案例:求三個數的和。
  • 雲計算開發學習筆記:Python3匿名函數
    來源:TechWeb.com.cnpython 使用 lambda 來創建匿名函數。所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。lambda 只是一個表達式,函數體比 def 簡單很多。lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間裡的參數。
  • Python基礎教程(一) - 函數和函數式編程
    前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。
  • Python小白學習記錄-匿名函數lambda
    匿名函數就是不需要通過def定義及顯示地指定函數名的函數匿名函數的特性(1)匿名函數只能有一個表達式,不用寫return,返回值就是該表達式的結果。(2)匿名函數沒有名字,不必擔心函數名衝突。(3)匿名函數也是一個函數對象,可以把匿名函數賦值給一個變量,再利用變量來調用該函數。(4)有些函數在代碼中只用一次,而且函數體比較簡單,不需要賦值給變量,直接調用可以減少代碼量,看起來比較」優雅「。
  • Python3中的匿名函數
    匿名函數即無名函數,其形式為:lambda 參數1,參數2:表達式,其中參數1,參數2為傳遞的參數,表達式計算出的結果為返回的值。# 普通函數def add1(x,y): return x+y print(add1(10,20)) # 匿名函數(lambda)add2 = lambda x,y:x+y # x,y 是參數,x+y的結果是函數的返回值print(add2(10,20))lambda是一個表達式,而不是語句,不是一個代碼塊。
  • 寫Python 代碼不可不知的函數式編程技術
    選自 Medium作者:Raivat Shah參與:魔王、Jamin本文對 Python 中的函數式編程技術進行了簡單的入門介紹。近來,越來越多人使用函數式編程(functional programming)。因此,很多傳統的命令式語言(如 Java 和 Python)開始支持函數式編程技術。
  • Python中的Lambda表達式
    Lambda表達式當我們需要做一些簡單的事情並且更希望快速完成工作而不是正式命名函數時,Lambda表達式是理想的選擇。Lambda表達式也稱為匿名函數。Python中的Lambda表達式是聲明小型匿名函數的一種簡短方式(沒有必要為Lambda函數提供名稱)。
  • Python中函數的定義、傳參和lambda函數是什麼?他們有什麼用?
    今天我們來學習函數的定義、傳參和lambda函數。開發工具:IDLE (Python 3.7 64-bit或者32-bit) (註:不需要3.7版本的也行,只需要Python3的版本都可以,在語法方面沒有什麼不同。)
  • Python面試題推薦:什麼是lambda函數?
    Python允許你定義一種單行的小函數。定義lambda函數的形式如下:labmda 參數:表達式lambda函數默認返回表達式的值。你也可以將其賦值給一個變量。lambda函數可以接受任意個參數,包括可選參數,但是表達式只有一個:>>> g = lambda x, y: x*y>>> g(3,4)12>>> g = lambda x, y=0,
  • 乾貨| 完美Python入門基礎知識點總結
    在 Python 中,字符串格式化使用與 C 中 sprintf 函數一樣的語法。如下實例:#!/usr/bin/pythonprint "My name is %s and weight is %d kg!"
  • python:pop函數詳解 - 二進位01
    pop函數詳解今天我為大家講解python中pop函數的使用。#python#簡介——pop()函數是python解釋器的內置方法,可作用於列表,字典。pop為「彈出」之意。用法說明——在builtins.py中找到pop函數。列表:L.pop([index]) -> item -- remove and return item at index (default last).
  • Python入門基礎之socket多線程編程,TCP伺服器和客戶端通信
    在上一篇文章中,我介紹了一下python3 socket編程的基礎,包括TCP、UDP客戶端和伺服器的建立過程(連結在最下方)。不過那個只是單線程的,伺服器一次只能和一個客戶端會話,多個客戶端的話只能等待。
  • python之OS模塊39個常用函數詳解
    作者:小伍哥 來源:AI入門學習os,語義作業系統,所以該模塊就是作業系統相關的功能了,用於處理文件和目錄這些我們日常手動需要做的操作,比如新建文件夾、獲取文件列表、刪除某個文件、獲取文件大小、重命名文件、獲取文件修改時間等,該模塊就包含了大量的作業系統操作函數,精選常用的進行解析,希望對大家有所幫助。