首頁技術文章正文

Python培訓:匿名函數與普通函數相比的區(qū)別

更新時間:2022-09-01 來源:黑馬程序員 瀏覽量:

  簡單來說,Python中的匿名函數就是沒有名稱的函數,也就是不再使用def定義的函數。如果要聲明匿名函數,則需要使用lambda關鍵字,匿名函數的聲明格式如下:

lambda 參數列表:表達式

  定義好的匿名函數不能直接使用,最好使用一個變量保存它,以便后期可以隨時使用這個函數。下面是定義和調用匿名函數的示例代碼,具體如下。

add = lambda a, b: a+b
# 調用add函數
print("運行結果:", add(10, 20))
print("運行結果:", add(20, 20))

  運行結果如圖6-20所示。

1661996969859_匿名函數運行結果1.jpg

  圖6-20 運行結果

  需要注意的是,使用lambda聲明的匿名函數能接收任何數量的參數,但只能返回一個表達式的值。此外,由于匿名函數的函數體只是一個表達式,它不能直接使用print()函數。

  在某些場景下,匿名函數非常有用。假設之前我們要對兩個數進行運算,如果希望聲明的函數支持所有的運算,可以將匿名函數作為函數參數傳遞。接下來,通過一個案例來演示,如例6-11所示。

  例6-11 匿名函數-1

def func(a, b, operation):
    print("a=%d"%a)
    print("b=%d"%b)
    print("result=", operation(a,b))
func(11, 22, lambda x, y:x +y)
print("-------------------")
func(11, 22, lambda x, y:x - y)

  運行結果如圖6-21所示。

1661997670833_匿名函數運行結果2.jpg

  圖6-21 運行結果

  注意:

  與使用def定義的普通函數相比,使用lambda定義的匿名函數有很多不同的地方。

  (1)普通函數在定義時是有名稱的,而匿名函數沒有函數名稱,這是最明顯的區(qū)別之一。

  (2)普通函數的函數體中可以包含多條語句,而匿名函數的函數體中只有一個表達式,要簡單很多。

  (3)普通函數的函數體中可以使用if、for等語句,而匿名函數中不可以使用。

  (4)普通函數一般用于實現復雜的功能,而匿名函數只能實現簡單的功能。

  (5)普通函數可以被其它程序調用,而匿名函數不能共享給其它程序使用。

分享到:
在線咨詢 我要報名
和我們在線交談!