1. 程式人生 > >Python基本語法之lambda函式

Python基本語法之lambda函式

 

 

lambda函式定義

       lambda函式也叫匿名函式,和普通的函式相比,就是省去了函式名稱而已,使用lambda可以省去定義函式的過程,讓程式碼更加精簡,lambda語句中,冒號前是引數,可以有多個,用逗號隔開,冒號右邊的返回值。

lambda argument_list: expression

 

lambda使用場景

1.將lambda函式賦值給一個變數,通過這個變數間接呼叫該lambda函式,示例如下。

add = lambda x, y: x+y
print(add(5, 10))

示例的列印結果為8。

2.將lambda函式賦值給其他函式,從而將其他函式用該lambda函式替換,一般可以用在測試用例中,可以在測試用例中用於Mock從而改變原函式的結果。

import datetime
import time

time.sleep = lambda x:None
print(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))
time.sleep(3)
print(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))

示例列印結果如下:

3.將lambda函式作為引數傳遞給其他函式,如filter或map等,這些為Python內建函式,函式定義如下。

filter(function, iterable)
map(function, iterable)

filter和map均返回的是迭代器,需要轉換為list才能正常打印出數值。

lambda函式使用示例如下:

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda x: x % 3 == 0, foo)))
print(list(map(lambda x: x * 2 + 1, foo)))

示例執行結果如下:

4.將lambda函式作為其他函式的返回值,返回給呼叫者。

def agent_operate(type):
    if type == "add":
        return lambda x,y: x + y
    if type == "minus":
        return lambda x,y: x - y
    return None

print(agent_operate("add")(3, 5))
print(agent_operate("a"))

示例執行結果如下:

 

如果您喜歡這篇文章,請別忘了點贊和評論哦!