我在偷偷學Python的第十八天(匿名函式)

Eamonze發表於2020-12-07

匿名函式

python 使用 lambda 來建立匿名函式。

  1. lambda只是一個表示式,函式體比def簡單很多。
  2. lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在
  3. lambda表示式中封裝有限的邏輯進去。
  4. lambda函式擁有自己的名稱空間,且不能訪問自有引數列表之外或全域性名稱空間裡的引數。
  5. 雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。

語法
lambda函式的語法只包含一個語句,如下:

lambda [arg1 [,arg2,…argn]]:expression

比方說,我要寫一個函式用於兩個數相乘

  • 如果用def方式來寫:
>>> def f(x,y):    
...     return x*y
>>> f(2,3)
6
  • 用匿名函式來寫:
>>> func = lambda x,y:x*y

可以看到,上面我們把匿名函式物件賦給一個變數,只要直接呼叫該物件就可以使用匿名函式:

>>> func(2,3)
6

你也可以給匿名函式傳入一個引數:

>>> func_2 = lambda x:x^2 
>>> func_2(3)
9

以上對匿名函式作了解釋,也舉了一些例子用以說明。那麼,匿名函式的優點是什麼呢?

  1. 不用取名稱,因為給函式取名是比較頭疼的一件事,特別是函式比較多的時候
  2. 可以直接在使用的地方定義,如果需要修改,直接找到修改即可,方便以後程式碼的維護工作
  3. 語法結構簡單,不用使用def 函式名(引數名):這種方式定義,直接使用lambda 引數:返回值 定義即可

作者:Eamon
時間:2020/12/7

相關文章