1. 程式人生 > >Python3——匿名函數

Python3——匿名函數

定義函數 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——匿名函數