1. 程式人生 > 實用技巧 >高階函式和lambda函式

高階函式和lambda函式

一、高階函式

1.高階函式是指把函式作為引數的一種函式。

2.高階函式示例

1 def FunAdd(f,x,y): #定義函式FunAdd 
2     return f(x)+f(y) #用傳給f的函式先對x和y分別處理後,再求和並 #返回 
3 def Square(x): #定義函式Square 
4     return x**2 #返回x的平方 
5 def Cube(x): #定義函式Cube 
6     return x**3 #返回x的立方 
7 print(FunAdd(Square,3,-5)) #呼叫函式FunAdd,計算32+(-5)2 
8 print(FunAdd(Cube,3,-5)) #
呼叫函式FunAdd,計算33+(-5)3

3.注意:函式不僅可以賦給形參,也可以賦給普通變數。賦值後,即可以用變數名替代函式名完成函式呼叫。

二、lambda函式

1.lambda函式也稱為匿名函式,是一種不使用def定義函式的形式,其作用是能快速定義一個簡單的函式

lambda函式的函式體只是一個表示式,所以lambda函式通常只能實現比較簡單的功能。

2.格式

  lambda [引數1[, 引數2, ..., 引數n]]: 表示式   冒號後面的表示式的計算結果即為該lambda函式的返回值。 3.lambda函式示例
1 def FunAdd(f,x,y): #定義函式FunAdd 
2 return f(x)+f(y) #用傳給f的函式先對x和y分別處理後,再求和並返回 3 print(FunAdd(lambda x:x**2,3,-5)) #呼叫函式FunAdd,計算32+(-5)2 4 print(FunAdd(lambda x:x**3,3,-5)) #呼叫函式FunAdd,計算33+(-5)3

程式碼解析:第3行程式碼中,lambda x:x**2定義了一個lambda函式,其有一個引數x,返回值是x**2(即x的平方);第4行程式碼中,lambda x:x**3定義了另一個lambda函式,其有一個引數x,返回值是x**3(即x的立方)。也可以將lambda函式賦給一個變數,然後通過該變數去呼叫相應的lambda函式。如:

fun=lambda x:x**2 print(fun(3)) #輸出9