程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

在Python中匿名函數怎麼用?

編輯:Python

在Python中,有時候我們需要一個簡單的函數去返回一些結果,但是我們又不想通過 def 專門去定義函數再引用,這種情況下有沒有好的辦法來完成呢?

答案是使用匿名函數,而Python中的匿名函數通過 lambda 表達式來完成。

1.匿名函數的使用

當我們使用匿名函數時, lambda 只是一個表達式,它並不是一個代碼塊,比如我們使用 map() 函數 和 lambda 來實現計算一個數的平方:

>>> list(map(lambda x: x * x, [1, 2, 3, 4]))
[1, 4, 9, 16]

在上面的 lambda 表達式中,我們並沒有給其定義函數名,但其仍然能夠正常執行。也就是說,我們在這裡定義的是一個匿名函數:lambda x: x * x ,其中 lambda x是匿名函數的聲明部分,而 x * x則是匿名函數的實現部分,且不需要寫 return 語句。它其實等價於下面這個普通函數:

def demo1(x):
return x * x

我們把這個匿名函數作為一個參數傳遞給 map() ,而 map() 中會把它看作一個和普通函數一樣的函數,從而進一步進行處理。同理,我們還可以把匿名函數賦值給一個變量,然後通過變量來調用函數,請看下面的例子:

''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流群:711312441 尋找有志同道合的小伙伴,互幫互助,群裡還有不錯的視頻學習教程和PDF電子書! '''
a, b = 10, 20
sum = lambda x, y: x + y
print(sum)
print(sum(a, b))

執行結果如下:

<function <lambda> at 0x000001F18AC9C268>
30

可以發現,上面的 sum 就是一個匿名函數,我們並沒有寫 return 語句,但依然能夠返回結果。lambda x, y是匿名函數的聲明部分,而 x + y則是匿名函數的實現部分。它其實等價於下面這個普通函數:

def demo2(x, y):
return x + y

2.匿名函數和普通函數的區別

我們使用匿名函數時,一行代碼就能夠搞定了,那是不是所有的普通函數都應該替換成匿名函數呢?

答案肯定是不行的,盡管我們使用 lambda 表達式來定義簡單的函數,但它的使用具有一定的局限性。匿名函數和普通函數之間,主要有以下幾點區別:

  • 定義普通函數時,必須要有函數名標識,而匿名函數則不需要有函數名來標識;
  • 普通函數中的函數體實現部分,可以有多條語句,而匿名函數則只能是一個表達式;
  • 普通函數可以用於實現很復雜的功能邏輯處理,而匿名函數一般用於實現一些簡單的功能;
  • 如果函數可能會被多次調用時,最好使用普通函數,在非多次調用的情況下才建議使用匿名函數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved