標籤:命名 完成 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 -> 匿名函數