匿名函式
什麼是匿名函式?
匿名函式是一種沒有名稱的函式。這類函式通常用於需要一個簡單的功能,但不想為它創建一個完整的函式定義時。Python 使用 lambda
關鍵字來創建匿名函式。
匿名函式的特點
- 簡單表達式:匿名函式只能包含一個表達式。這個表達式的運算結果會自動作為函式的返回值。因此,匿名函式非常適合用來執行簡單的計算或邏輯操作。
- 輕量簡便:匿名函式適用於臨時需要的簡單功能,特別是在代碼中只需使用一次或不需要重用的情況下。這使得代碼更為簡潔,不必為每個小功能定義一個完整的函式。
- 無法處理複雜邏輯:由於匿名函式的主體只能是一個表達式,它無法包含多行語句或複雜的控制結構(如循環、條件語句等)。這限制了它的功能,但也促使其在簡單操作中的使用更加高效。
匿名函式的語法
匿名函式的語法非常簡單:
lambda [arg1 [, arg2, ... argn]]: 表達式
lambda
關鍵字:用來定義匿名函式。- 參數列表:位於
lambda
關鍵字後面,參數之間用逗號分隔,可以包含多個參數。 - 冒號
:
:緊跟在參數列表後面,標識表達式的開始。 - 表達式:函式的主體,這裡僅允許單一的表達式,該表達式的運算結果就是函式的返回值。
何時使用匿名函式
匿名函式在以下情境中特別有用:
- 作為其他函式的參數:例如,
filter()
、map()
、reduce()
等內建函式經常需要一個簡單的函式作為參數。使用匿名函式能讓代碼更加簡潔易懂。 - 臨時需要的小功能:當代碼中臨時需要一個簡單功能,且不打算在其他地方重用時,可以使用匿名函式來避免定義多餘的函式。
匿名函式範例
讓我們來看一些使用匿名函式的範例:
- 範例 1:簡單的相加函式
# 定義匿名函式 sum = lambda arg1, arg2: arg1 + arg2 # 呼叫匿名函式 print("相加後的值為:", sum(10, 20)) print("相加後的值為:", sum(20, 20))
輸出結果:
相加後的值為 : 30 相加後的值為 : 40
- 範例 2:結合內建函式
map()
的使用# 使用匿名函式與 map 函式 numbers = [1, 2, 3, 4] squared_numbers = list(map(lambda x: x**2, numbers)) print("平方後的數字列表:", squared_numbers)
輸出結果:
平方後的數字列表: [1, 4, 9, 16]
在這個範例中,
lambda x: x**2
是一個匿名函式,它將每個數字的平方作為結果傳遞給map()
函式。map()
函式將這個匿名函式應用於列表中的每個元素,最終返回一個新的列表,包含所有元素的平方。
注意事項
- 可讀性:雖然匿名函式能讓代碼更簡潔,但過度使用可能會使代碼變得難以理解,特別是在匿名函式中包含複雜表達式時。應根據具體情況決定是否使用匿名函式,保持代碼的清晰性。
- 功能限制:由於匿名函式只能包含一個表達式,它不適合需要多行操作或包含複雜邏輯的情境。在這些情況下,應考慮使用普通函式來實現更強大的功能。