怎么理解Python的函數(shù)式編程-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

十余年的廣豐網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷(xiāo)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整廣豐建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“廣豐網(wǎng)站設(shè)計(jì)”,“廣豐網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

本篇文章為大家展示了怎么理解Python的函數(shù)式編程,代碼簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

函數(shù)式編程就是一種抽象程度很高的編程范式,純粹的函數(shù)式編程語(yǔ)言編寫(xiě)的函數(shù)沒(méi)有變量,因此,任意一個(gè)函數(shù),只要輸入是確定的,輸出就是確定的,這種純函數(shù)我們稱(chēng)之為沒(méi)有副作用。函數(shù)式編程的一個(gè)特點(diǎn)就是,允許函數(shù)接收函數(shù)作為參數(shù),也允許把函數(shù)作為返回值返回。Python對(duì)于函數(shù)式編程提供部分支持。由于Python允許使用變量,因此Python不是純函數(shù)式編程語(yǔ)言。

高階函數(shù)

所謂高階函數(shù),就是允許函數(shù)的參數(shù)接收其他函數(shù) 下面介紹幾個(gè)python內(nèi)置的高階函數(shù):

map() map()函數(shù)接收兩個(gè)參數(shù),一個(gè)序列,一個(gè)函數(shù)。 map()的作用就是把傳入的函數(shù)依次作用于序列的元素,然后把結(jié)果作為一個(gè)Iterator返回。

def function(x): 
return x * x 
r = map(function,[1,2,3,4,5]) 
print('map result:',list(r)) 
//運(yùn)行結(jié)果: 
//map result: [1, 4, 9, 16, 25]

reduce() reduce()也接收兩個(gè)參數(shù),一個(gè)函數(shù),一個(gè)序列; reduce()也把函數(shù)作用在序列上,但是這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果繼續(xù)和系列的下一個(gè)元素做累計(jì)計(jì)算。

from functools import reduce
 def function1(x,y): 
return x + y 
reduce(function1,[1,2,3,4,5]) 
print('reduce result:',reduce(function1,[1,2,3,4,5])) 
//運(yùn)行結(jié)果: 
//reduce result: 15

filter() filter()的功能是過(guò)濾序列 跟map()類(lèi)似,filter也接收一個(gè)函數(shù)一個(gè)序列 filter把函數(shù)作用于序列的每一個(gè)元素,根據(jù)函數(shù)返回的True或者False決定元素的保留還是去掉

def isOdd(x): 
return x % 2 == 1 
p = list(filter(isOdd,[1,2,3,4,5])) 
print('filter result:',p) 
//運(yùn)行結(jié)果: 
//filter result: [1, 3, 5]

sorted() 顧名思義,sorted()的功能就是對(duì)序列進(jìn)行排序 sorted也是一個(gè)高階函數(shù),可以接受一個(gè)key函數(shù)。key指定的函數(shù)將作用于list的每個(gè)元素上,并根據(jù)key函數(shù)返回的結(jié)果進(jìn)行排序。

arr = [23,0,45,-13,46,85,-70]; 
print('sorted(arr)
sorted(arr)) 
#sorted(arr): [-70, -13, 0, 23, 45, 46, 85] 
print('sorted(arr,key=abs):'
sorted(arr,key=abs)) 
print('sorted(arr,key=abs,reverse=True)'
sorted(arr,key=abs,reverse=True)) 
//運(yùn)行結(jié)果: 
//sorted(arr,key=abs): [0, -13, 23, 45, 46, -70, 85] 
//sorted(arr,key=abs,reverse=True) [85, -70, 46, 45, 23, -13, 0]

返回函數(shù)

 高階函數(shù)不僅能接受函數(shù)作為參數(shù),還能把函數(shù)作為返回值返回。

def lazy_sum(*args): 
def sum(): 
ax = 0 
for n in args: 
ax = ax + n 
return ax 
return sum 
f = lazy_sum(1,2,3,4,5) 
print(f) 
print('f()=',f()) 
//運(yùn)行結(jié)果: 
//.sum at 0x109c85950> 
//f()= 15 
#運(yùn)行結(jié)果表明,當(dāng)我們調(diào)用lazy_sum的時(shí)候并不直接返回計(jì)算結(jié)果,而是返回sum函數(shù),當(dāng)我們執(zhí)行f()的時(shí)候才會(huì)計(jì)算結(jié)果*

匿名函數(shù)

 有些時(shí)候我們傳入一個(gè)函數(shù)作為參數(shù)的時(shí)候,不必要每次都對(duì)他進(jìn)行顯性的定義,python提供lambda創(chuàng)建匿名函數(shù) 匿名函數(shù)有一個(gè)現(xiàn)在就是只能有一個(gè)表達(dá)式,不用寫(xiě)return,表達(dá)式的結(jié)果就是返回值 匿名函數(shù)沒(méi)有名字所以不存在函數(shù)名沖突的問(wèn)題,使用匿名函數(shù)利于減少代碼,這與python倡導(dǎo)理念也是一致的。

s = reduce(lambda x,y: x+y,[1,2,3,4,5]) 
print('s=',s) 
//運(yùn)行結(jié)果:
//s= 15

偏函數(shù)

我理解的偏函數(shù)的功能是這樣的:

假如你有一個(gè)這樣的函數(shù):它的功能就是對(duì)人打招呼

def sayHello(name,greet): 
print(greet,name)

假設(shè)接下來(lái)你要對(duì)名字是'xiaoMing'這個(gè)人,用一百種方式跟他打招呼。 如果你知道默認(rèn)參數(shù),那么你肯定會(huì)想到用它,當(dāng)然沒(méi)錯(cuò),但是考慮到每次傳入實(shí)在是太麻煩了,所以:

def sayHelloToXiaoMing(greet,name='xiaoMing'): 
return sayHello(name,greet) 
sayHelloToXiaoMing('I love U');

其實(shí)sayHelloToXiaoMing就是sayHello的一個(gè)偏函數(shù)。 那么偏函數(shù)的功能到底是??沒(méi)錯(cuò),偏函數(shù)就是幫助我們直接創(chuàng)建一個(gè)偏函數(shù)的,而不需要我們自己去創(chuàng)建:

from functools import partial 
sayHelloToTom = partial(sayHello,'Tom') 
sayHelloToTom('Sawadika')

上述內(nèi)容就是怎么理解Python的函數(shù)式編程,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:怎么理解Python的函數(shù)式編程-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article24/dsjdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、Google企業(yè)網(wǎng)站制作、建站公司網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

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

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)