天天看點

高階函數 | Python從入門到精通:高階篇之十三

檢視上一節:遞歸的練習課程

高階函數

Python支援函數式程式設計,當然也是支援高階函數的。

函數式程式設計:在Python中,函數是一等對象

一等對象一般都會具有如下特點:

① 對象是在運作時建立的
    ② 能指派給變量或作為資料結構中的元素
    ③ 能作為參數傳遞
    ④ 能作為傳回值傳回
           

高階函數:

接收函數作為參數,或者将函數作為傳回值的函數是高階函數;

當我們使用一個函數作為參數時,實際上是将指定的代碼傳遞進了目标函數。

高階函數至少要符合以下兩個特點中的一個:

① 接收一個或多個函數作為參數
      ② 将函數作為傳回值傳回     
           

示例: 定義一個函數,可以将清單中的所有的偶數,儲存到一個新清單中并傳回、

代碼展示:

# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]
def fn( lst) :
    '''
        fn()函數可以将指定清單中的所有偶數擷取出來,并儲存到一個新清單中傳回

        參數:
            lst:要進行篩選的清單
    '''
    # 建立一個新清單
    new_list = []

    # 對清單進行篩選
    for n in lst :
        # 判斷n的奇偶
        if n %2==0 :
            new_list.append(n)
    # 傳回新清單
  return new_list
def fn(l) #調用函數,并将清單l傳進去           

執行結果為:

高階函數 | Python從入門到精通:高階篇之十三

這就擷取到了清單l的所有偶數。這就是一個普通的函數。接下來介紹高階函數是怎樣的,高階函數可以接收函數作為參數,當我們使用一個函數作為參數時,實際上是将指定的代碼傳遞進了目标函數。

取出所有的偶數、奇數和大于5的數等更多的功能,這就要将這個函數擴充一下了。

# 建立一個清單
l = [1,2,3,4,5,6,7,8,9,10]

# 定義一個函數,用來檢查一個任意的數字是否是偶數。
def fn2(i) :
    if i % 2 == 0 :
        return True

    return False    

# 這個函數用來檢查指定的數字是否大于5
def fn3(i):
    if i > 5 :
        return True    
    return False
# 這個函數可以将3的倍數取出
def fn4(i):
    if i % 3 == 0 :
        return True
    return False

def fn(func , lst) :# 定義高階函數fn

    # 建立一個新清單
    new_list = []

    # 對清單進行篩選
    for n in lst :
      new_list.append(n)
    # 傳回新清單
    return new_list
#此時就可以随意調用不同的函數來獲得不同的結果了,
#隻需要改變高階函數fn的兩個參數即可。     
print(fn(fn4 , l))#此時調用的是fn4,清單是l,即意味着取出l清單中所有能被3整除的數。           
高階函數 | Python從入門到精通:高階篇之十三

點選檢視配套視訊教程

擷取更多内容請訂閱

Python學習站

官方技術圈!