Python3——匿名函數
阿新 • • 發佈:2018-03-18
定義函數 python 變量 OS rabl 運算 def 簡潔 enum
沒有名字的函數,不用寫return
,返回值就是該表達式的結果。
語法:lambda 參數:方法(或三元運算)
lambda x:x*x等同於
def f(x): return x * x
#普通函數 def calc(x,y): if x > y: return x/y else: return x*y #匿名函數,想要調用必須賦一個變量 func = lambda x,y: x/y if x>y else x*y #匿名函數最多只支持三元運算,再復雜的判斷不支持 print(calc(3,8)) print(calc(16,8)) print(func(3,8)) print(func(16,8))
結果:
24 2.0 24 2.0
上面的例子好像看不出匿名函數和普通函數有什麽區別,反而看上去會容易迷糊,那有什麽用呢?
有些時候,不需要顯式地定義函數,直接傳入匿名函數更方便。
以map()函數為例:
現在需要一個列表裏的所有元素自乘
a = list(range(10)) print(a) #普通方法 for index,i in enumerate(a): a[index] = i*i print(a) #map()方法 print(list(map(lambda x:x*x,a)))
結果:
#普通方法 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0,1, 4, 9, 16, 25, 36, 49, 64, 81] #map()方法 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
可以看出同一個需求顯然用匿名函數更加簡潔
PS:map(func, *iterables)函數,第一個參數是個函數,第二個是用來操作的列表等元素集合
總結:
1、匿名函數不需要特意去定義一個函數名,可能這個函數只是某個地方臨時用一下,後面就不會再用了
2、匿名函數一般都是和其他方法搭配使用,使得代碼更加簡潔
Python3——匿名函數