真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么理解Python的函數(shù)式編程

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

10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有安徽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

高階函數(shù)

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

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

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

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

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])) 
//運行結(jié)果: 
//reduce result: 15

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

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

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

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)) 
//運行結(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()) 
//運行結(jié)果: 
//.sum at 0x109c85950> 
//f()= 15 
#運行結(jié)果表明,當(dāng)我們調(diào)用lazy_sum的時候并不直接返回計算結(jié)果,而是返回sum函數(shù),當(dāng)我們執(zhí)行f()的時候才會計算結(jié)果*

匿名函數(shù)

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

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

偏函數(shù)

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

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

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

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

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

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

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

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


當(dāng)前題目:怎么理解Python的函數(shù)式編程
標(biāo)題網(wǎng)址:http://weahome.cn/article/gehoee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部