成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 函數(shù)式編程 - 高階函數(shù)

Dogee / 3328人閱讀

摘要:對函數(shù)式編程提供部分支持。對于純函數(shù)編程,對任一函數(shù),只要輸入是確定的,輸出就是確定的,可稱之為無副作用。二函數(shù)式編程的內(nèi)建函數(shù)語法,接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是可迭代對象。


Functional Programming,函數(shù)式編程。Python對函數(shù)式編程提供部分支持。對于純函數(shù)編程,對任一函數(shù),只要輸入是確定的,輸出就是確定的,可稱之為無副作用。


一、高階函數(shù) 1、變量指向函數(shù)

我們知道函數(shù)的計(jì)算結(jié)果可以賦值給變量,例如x = abs(-5)。
同理,變量也可以指向函數(shù),例如f = abs。
如果一個(gè)變量指向了一個(gè)函數(shù),那我們直接調(diào)用abs(x)與執(zhí)行f(x)返回的結(jié)果是完全相同。

2、函數(shù)名也是變量

我們也可以把函數(shù)名看成是一個(gè)變量,例如abs()函數(shù)。執(zhí)行語句abs=-5,之后調(diào)用abs(-5)就會(huì)報(bào)錯(cuò),因?yàn)榇藭r(shí)abs這個(gè)變量已經(jīng)不指向絕對值函數(shù)了,而是指向一個(gè)整數(shù)-5。

3、函數(shù)作為形參

既然變量可以指向函數(shù),函數(shù)也可以充當(dāng)變量,那么一個(gè)函數(shù)就可以接收另外一個(gè)函數(shù)作為它自己的形式參數(shù),即實(shí)現(xiàn)高階函數(shù)。例如:

>>> def add(x , y ,  f ): # 把函數(shù)作為參數(shù)傳入。
...     return f(x) + f(y)
>>> add (-5,-2,abs)
7
二、函數(shù)式編程的內(nèi)建函數(shù) 1、map(func,seq)

語法:map(func,seq),接收兩個(gè)參數(shù),一個(gè)是函數(shù)func,一個(gè)是可迭代對象。

作用:將傳入的func函數(shù)循環(huán)作用于seq序列的每個(gè)元素上,并返回新的可迭代對象。

注意:map()函數(shù)返回的是一個(gè),我們可以使用list()函數(shù)將所獲得的結(jié)果以list形式返回。

舉個(gè)栗子:用map()實(shí)現(xiàn)f(x)=x*x

>>> def f(x):
...     return x*x
...
>>> map(f,[1,2,3,4,5])

>>> list(map(f,[1,2,3,4,5]))     # 傳入的函數(shù)f作用于序列的每個(gè)元素調(diào)并用list()
[1, 4, 9, 16, 25]

當(dāng)然還可以使用其他方法實(shí)現(xiàn):
exp1:list( map((lambda x:x*x),[1,2,3,4,5]))
exp2:[x*x for x in [1,2,3,4,5]]

2、reduce(func,list)

語法reduce(func,list),必須接受兩個(gè)參數(shù)。

作用:把func函數(shù)作用在list序列上[x1,x2,x3,...]。取出序列的頭兩個(gè)元素x1x2,作用于func,取的一個(gè)單一的值,例如a,再將a與序列的下一個(gè)元素x3func運(yùn)算,依此反復(fù)。其效果就相當(dāng)于reduce(f,x1,x2,x3)=f(f(x1,x2),x3)

注意:使用reduce(),必須導(dǎo)入模塊from functools import reduce

大家可以自己找個(gè)栗子玩玩哈~~~

3、filter()

語法filter(func,[序列]),接收一個(gè)“過濾”函數(shù),和一個(gè)序列。返回的是一個(gè)Iterator可迭代對象。

作用:按照func規(guī)則過濾序列,filter()把傳入的函數(shù)func依此作用于每個(gè)元素,然后根據(jù)返回值TrueorFalse,來保留為True的對應(yīng)元素。

注意:跟map()類似,filter()返回的是一個(gè)可迭代對象,故需要使用list()來查看所獲得結(jié)果并返回list類型。

舉個(gè)栗子:在一個(gè)list中,刪除偶數(shù),保留奇數(shù)。

>>> def is_odd(n):
...     return n % 2 == 1  # 返回0(false) 或1(True)
...
>>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) )
[1, 3, 5, 7, 9]

恩,寫到這吧,給自己一個(gè)任務(wù),明天寫“閉包”部分。


? thanks for watching, keep on updating...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42452.html

相關(guān)文章

  • Python一等函數(shù)簡析

    摘要:本文重點(diǎn)了解函數(shù)在中是一等對象了解中的可調(diào)用對象掌握正確定義函數(shù)參數(shù)的方法了解和中支持函數(shù)式編程的方法。歸約函數(shù)定義能夠接受一個(gè)可迭代對象并返回單個(gè)結(jié)果的函數(shù)是歸約函數(shù)。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之函數(shù)篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、了解函數(shù)在Python中是一等對象;2、了解Python中的可調(diào)用對象;3...

    shusen 評論0 收藏0
  • Python一等函數(shù)簡析

    摘要:本文重點(diǎn)了解函數(shù)在中是一等對象了解中的可調(diào)用對象掌握正確定義函數(shù)參數(shù)的方法了解和中支持函數(shù)式編程的方法。歸約函數(shù)定義能夠接受一個(gè)可迭代對象并返回單個(gè)結(jié)果的函數(shù)是歸約函數(shù)。 本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之函數(shù)篇的重點(diǎn)知識(shí)及個(gè)人心得,歡迎打算入門Python的朋友與我一起學(xué)習(xí)交流。。 本文重點(diǎn): 1、了解函數(shù)在Python中是一等對象;2、了解Python中的可調(diào)用對象;3、掌握...

    鄒立鵬 評論0 收藏0
  • PyTips 0x02 - Python 中的函數(shù)編程

    摘要:項(xiàng)目地址中的函數(shù)式編程函數(shù)式編程英語或稱函數(shù)程序設(shè)計(jì),又稱泛函編程,是一種編程范型,它將電腦運(yùn)算視為數(shù)學(xué)上的函數(shù)計(jì)算,并且避免使用程序狀態(tài)以及易變對象。 項(xiàng)目地址:https://git.io/pytips Python 中的函數(shù)式編程 函數(shù)式編程(英語:functional programming)或稱函數(shù)程序設(shè)計(jì),又稱泛函編程,是一種編程范型,它將電腦運(yùn)算視為數(shù)學(xué)上的函數(shù)計(jì)算,并且...

    FrozenMap 評論0 收藏0
  • [python] 初探'函數(shù)編程'

    摘要:前言繼續(xù)向下看廖大教程,看到了函數(shù)式編程這一節(jié),當(dāng)時(shí)是覺得沒啥用直接跳過了,這次準(zhǔn)備要仔細(xì)看一遍了,并記錄下一些心得。 前言 繼續(xù)向下看廖大教程,看到了函數(shù)式編程這一節(jié),當(dāng)時(shí)是覺得沒啥用直接跳過了,這次準(zhǔn)備要仔細(xì)看一遍了,并記錄下一些心得。 函數(shù)式編程 上學(xué)期有上一門叫 人工智能 的課,老師強(qiáng)行要我們學(xué)了一個(gè)叫做 prolog 的語言,哇那感覺確實(shí)難受,思維方式完全和之前學(xué)過的不一樣,...

    xcc3641 評論0 收藏0
  • python高階函數(shù)中一個(gè)容易犯的錯(cuò)

    摘要:究其原因,在于的惰性計(jì)算以及匿名函數(shù)的閉包特性。上面的代碼中,是一個(gè)變量,匿名函數(shù)只有在時(shí)才會(huì)真正調(diào)用,而此時(shí),的值已經(jīng)是當(dāng)前的值,而不是之前的值了,比如,應(yīng)當(dāng)是的倍數(shù),但此時(shí)的值并不是,導(dǎo)致成立。 問題 python對函數(shù)式編程有一定的支持,具體表現(xiàn)在高級函數(shù),map,reduce,filter,partial function等幾個(gè)方面。在應(yīng)用函數(shù)式編程中,需要關(guān)注函數(shù)式編程中的變...

    booster 評論0 收藏0

發(fā)表評論

0條評論

Dogee

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<