日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入理解Lambda

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解Lambda 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

Lambda是一個表達式,也可以說它是一個匿名函數。然而在使用它或是閱讀Lambda代碼的時候,卻顯得并不那么容易。因為它匿名,因為它刪減了一些必要的說明信息(比如方法名)。下面就來說說Lambda是如何進行轉換和工作的吧。


版權說明

著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
作者:Q-WHai
發表日期: 2016年3月10日
鏈接:https://qwhai.blog.csdn.net/article/details/50774827
來源:CSDN
更多內容:分類 >> Thinking In Python


目錄

文章目錄

  • 概述
  • 版權說明
  • 目錄
    • @[toc]
  • Lambda
    • 初步認識
      • 表達式及定義
      • 實例說明
    • 變量作用域說明
    • Lambda評價
      • 優點
      • 缺點
  • Ref
  • 征集

Lambda

初步認識

表達式及定義

lambda [ arg1 [arg2, arg3, … argN] ] : expression
                      – 《Python核心編程》

從《Python核心編程》書本中包含了以上lambda表達式的表述。也就是說在lambda右側的式子中,冒號左邊的為參數值,右邊的為計算表達式。


實例說明

1.單層參數求和
現在假設需要對兩個數進行求和運算。對于正常的邏輯代碼,不難寫出如下代碼:

def sum(x, y):return x + y

而在lambda中,我們可以這樣來寫:

p = lambda x, y: x + y

代碼簡潔了許多,可是因為缺少方法名對此步操作進行描述,也讓我們對這個求和的Lambda表達式有一些疑問,也就是它在程序中目的是什么,我們難以揣測。

2.嵌套參數求和
需求還是之前的需求,可是我們在對參數的傳遞發生了變化。什么叫作嵌套參數,我們可以參考如下代碼:
注:下面的一段代碼實際上是存在語法錯誤的,此代碼的目的純粹只是為了說明問題。請勿模仿

def sum_outer(x=0):def sum_inner(y):return x + y

采用lambda改寫后的代碼如下:

def test_lamdba2(x=0):return lambda y: x + y

而兩種代碼邏輯的轉換關系如下:

3.嵌套lambda
前面假想了一種方法內部嵌套方法的情況。我們說Lambda就是理解成在方法內部嵌套了一個“表達式方法”。所以,還可以能上面進行一層Lambda的方法進行改寫。將代碼中的方法test_lambda2改寫成lambda。改寫后的描述如下圖所示:

將上圖所示的轉換過程與之前的轉換進行一個分析,可以得到一個結論,在lambda的表達式中,前面的lambda為外層方法,后續lambda則為次外層方法,并以次由外向內遞推。


變量作用域說明

關于變量在Lambda中的作用域從上面的幾幅圖中也可以看出一二來,主要可以做出以下幾點的總結:

  • 對局部變量可見
  • 對全局變量可見
  • 對當前層傳入的參數可見
  • 對上層函數傳入的參數可見
  • 對上層Lambda傳入的參數可見

  • Lambda評價

    優點

  • 在普通代碼里幾行的代碼,在Lambda中只需要一行就可以解決。所以代碼比以前更簡潔了
  • 可以在某一個方法內部定義,這樣可以提高操作的便捷性
  • 缺點

  • Lambda是一個匿名函數,因為是匿名,所以可讀性變差了
  • 有時候有多個Lambda嵌套(就像實例中的第3點一樣),讓程序變得難以理解

  • Ref

    • 《Python核心編程》
    • 《Python學習手冊》

    征集

    如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行注冊:
    https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的深入理解Lambda的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。