中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python高階函數如何使用

發布時間:2020-11-03 09:28:52 來源:億速云 閱讀:150 作者:小新 欄目:編程語言

小編給大家分享一下Python高階函數如何使用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

舉一個最簡單的高階函數

def foo(x, y, f):  # f 是一個函數
    """
    把 x, y 分別作為參數傳遞給 f, 最后返回他們的和
    :param x:
    :param y:
    :param f:
    :return:
    """
    return f(x) + f(y)
 
 
def foo1(x):
    """
    返回參數的 x 的 3次方
    :param x:
    :return:
    """
    return x ** 3
 
 
r = foo(4, 2, foo1)    
 
print(r)    # 72

說明:

1、這里的 foo 就是高階函數, 因為他接收了一個函數作為參數.

2、foo1作為參數傳遞給了foo, 而且foo中的局部變量f接收了foo傳遞過來的數據, 那么最終是foo和f同時指向了同一個對象。

Python高階函數如何使用

總結

編寫高階函數,就是讓函數的參數能夠接收其他的函數。

把函數作為參數傳入,這樣的函數稱為高階函數,函數式編程就是指這種高度抽象的編程范式。

高階函數另一種形式:把函數作為返回值

高階函數除了可以接受函數作為參數外,還可以把函數作為結果值返回。

def foo():
    x = 10
 
    def temp():
        nonlocal x
        x += 10 #x=x+10
        return x
 
    return temp
 
f = foo()
 
print(f())
print(f())

輸出結果:

Python高階函數如何使用

說明:

調用foo()得到的一個函數, 然后把函數賦值給變量f, 這個時候f和 foo內部的temp其實指向了同一個函數對象。

返回的函數每調用一次都會把foo 的局部變量x增加 10 .所以兩次調用分別得到 20 和 30。

返回訪問了外部函數的局部變量或者全局變量的函數,這種函數就是閉包。

內置高階函數

高階函數在函數式編程語言中使用非常的廣泛。

本節簡單介紹幾個常用的高階函數。

列表的排序, map/reduce, filter等。

map()和filter()

函數編程語言通常都會提供map, filter, reduce三個高階函數.

在python3中, map和filter仍然是內置函數, 但是由于引入了列表推導和生成器表達式, 他們變得沒有那么重要了。

列表推導和生成器表達式具有了map和filter兩個函數的功能, 而且更易于閱讀。

代碼展示:

a = map(lambda x: x ** 2, [10, 20, 30, 40])
print(list(a))
print(type(a))

輸出結果:

Python高階函數如何使用

說明:

1、map函數是利用已有的函數和可迭代對象生成一個新的可迭代類型:map類型。

2、map的參數1是一個函數, 參數2是一個可迭代類型的數據. map會獲取迭代類型的每個數據, 傳遞給參數1的函數, 然后函數的返回值組成新的迭代類型的每個元素。

3、也可以有多個迭代器, 則參數1的函數的參數個數也會增加。

4、新生成的迭代器類型的元素的個數, 會和最短的那個迭代器的元素的個數保持一致。

a = map(lambda x, y: x + y, [10, 20, 30, 40], [100, 200])
print(list(a))

輸出結果:

Python高階函數如何使用

使用列表推倒實現上面的功能

使用列表比map優雅了很多, 而且也避免了參數1的函數

list1 = [10, 20, 30, 40]
list3 = [x ** 2 for x in list1]
print(list3)

輸出結果:

Python高階函數如何使用

list1 = [10, 20, 30, 40]
list2 = [100, 200]
# 注意:列表推倒中這里是使用的笛卡爾積
list3 = [x + y for x in list1 for y in list2]
print(list3)

輸出結果:

Python高階函數如何使用

以上是Python高階函數如何使用的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

韶关市| 太保市| 加查县| 南阳市| 揭东县| 新化县| 玉环县| 望都县| 玛沁县| 洞口县| 卢湾区| 延吉市| 龙南县| 梁河县| 呼玛县| 三原县| 五寨县| 科技| 建湖县| 玛纳斯县| 娄烦县| 同江市| 石阡县| 奎屯市| 关岭| 屯门区| 方正县| 峨边| 临泽县| 怀集县| 滕州市| 肇州县| 营口市| 华阴市| 汤阴县| 仙桃市| 五台县| 普宁市| 辽中县| 贡觉县| 磐石市|