Python的程式結構[4] -> 函數/Function -> 匿名函數

來源:互聯網
上載者:User

標籤:命名   完成   return   入參   lambda   對象   microsoft   span   ros   

匿名函數 / Anonymous Function

匿名函數是一種不需要綁定函數名的函數 (i.e. functions that are not bound to a name)。匿名函數通過 lambda 運算式進行構建。常用於快速建立起一個(一次性的)函數。

Note: lambda 是 Python 的一個運算式/關鍵字,類似 return,並非一個函數,而是能夠產生匿名函數。

關於匿名函數的使用,可以用下面的方式,直接使用,

1 # Use directly2 f = lambda x: x+13 def foo(x): return x4 print(‘f type is:‘, type(f), ‘foo type is:‘, type(foo))

lambda 所產生的函數可以直接使用,此時可能有違匿名函數的概念,當 匿名函式通過 lambda 運算式定義後,需要調用時由於函數匿名因此需要將其賦予某個變數,通過變數名進行調用,此時實際上已經對匿名函數進行了命名,因此與匿名的概念有所相違。

f type is: <class ‘function‘> foo type is: <class ‘function‘>

但直接使用並不是匿名函數的最佳使用方式,lambda 產生的匿名函數最佳的使用情境應該是當一個函數需要一個簡單臨時函數作為輸入參數的時候,使用 lambda 產生匿名函數可以免去為這個中間函數進行定義命名的過程。例如使用 map 對可迭代對象的所有值進行平方的時候,用匿名函數完成平方計算便十分方便。

# Use as a calculate func in other functionprint(list(map(lambda x: x*x, [1, 2, 3, 4])))

同時,匿名函數也可以用在當需要 return 一個函數的情境下,免去對函數的命名。

1 # Use as a return func in other function2 def foo(n): return lambda x: n+x3 print(foo(‘n‘)(‘x‘))

 

Python的程式結構[4] -> 函數/Function -> 匿名函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.