欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python高階函數(shù)如何使用

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

網(wǎng)站建設(shè)、成都網(wǎng)站制作中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設(shè)十余年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

舉一個最簡單的高階函數(shù)

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

說明:

1、這里的 foo 就是高階函數(shù), 因?yàn)樗邮樟艘粋€函數(shù)作為參數(shù).

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

Python高階函數(shù)如何使用

總結(jié)

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

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

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

高階函數(shù)除了可以接受函數(shù)作為參數(shù)外,還可以把函數(shù)作為結(jié)果值返回。

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

輸出結(jié)果:

Python高階函數(shù)如何使用

說明:

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

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

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

內(nèi)置高階函數(shù)

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

本節(jié)簡單介紹幾個常用的高階函數(shù)。

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

map()和filter()

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

在python3中, map和filter仍然是內(nèi)置函數(shù), 但是由于引入了列表推導(dǎo)和生成器表達(dá)式, 他們變得沒有那么重要了。

列表推導(dǎo)和生成器表達(dá)式具有了map和filter兩個函數(shù)的功能, 而且更易于閱讀。

代碼展示:

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

輸出結(jié)果:

Python高階函數(shù)如何使用

說明:

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

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

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

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

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

輸出結(jié)果:

Python高階函數(shù)如何使用

使用列表推倒實(shí)現(xiàn)上面的功能

使用列表比map優(yōu)雅了很多, 而且也避免了參數(shù)1的函數(shù)

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

輸出結(jié)果:

Python高階函數(shù)如何使用

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

輸出結(jié)果:

Python高階函數(shù)如何使用

以上是Python高階函數(shù)如何使用的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:Python高階函數(shù)如何使用
網(wǎng)頁地址:http://www.chinadenli.net/article14/gsjide.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站微信小程序網(wǎng)站排名網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)