日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python函数式编程思想_以python为例,浅谈函数式编程思想

發(fā)布時(shí)間:2025/4/5 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数式编程思想_以python为例,浅谈函数式编程思想 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)集data_socrestudentid course score

1 math 89

2 english 76

. . .

問題:求各studentid總分

方法1-一般寫法:

student_score_total={}

for i in xrange(data_socre.shape[0]):

studentid=data_socre.ix[i,'studentid']

score=data_socre.ix[i,'score']

if studentid in student_score_total.keys():

student_score_total[studentid]+=score

else:

student_score_total[studentid]=score

方法2-函數(shù)式編程:

student_score_total=data_socre.ix[:,['studentid','score']].groupby('studentid').agg(sum)

函數(shù)式編程要明顯優(yōu)于一般寫法(代碼量、可讀性)

那什么是函數(shù)式編程:

函數(shù)式編程定義

定義(百度百科):函數(shù)式編程是種編程方式,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語(yǔ)言最重要的基礎(chǔ)是λ演算(lambda calculus),而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)。簡(jiǎn)單說(shuō),"函數(shù)式編程"是一種"編程范式"(programming paradigm),也就是如何編寫程序的方法論。它屬于"結(jié)構(gòu)化編程"的一種,主要思想是把運(yùn)算過(guò)程盡量寫成一系列嵌套的函數(shù)調(diào)用。

特性

一、高階函數(shù)

和一般函數(shù)差別:

1、輸入?yún)?shù)可以是函數(shù)

2、輸出結(jié)果可以是函數(shù)

例(python2.7,下同):

輸出結(jié)果可以是函數(shù)

def add(x,y):

def add_1():

return x+y

return add_1

add_1=add(1,2)

print add_1

輸入?yún)?shù)可以是函數(shù)

def add(x,y):

return x+y

def add_square(add):

return add*add

計(jì)算

print add_square(add(1,2))

9

二、閉包

定義(百度百科):閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。在本質(zhì)上,閉包是將函數(shù)內(nèi)部和函數(shù)外部連接起來(lái)的橋梁。

構(gòu)成(必要):

1、外部函數(shù)

2、內(nèi)部函數(shù)

3、外部函數(shù)變量

例:

def add(x,y):

def add_1():

return x+y

return add_1

外部函數(shù)(add):必須將內(nèi)部函數(shù)作為返回

內(nèi)部函數(shù)(add_1):必須要有一個(gè)內(nèi)部函數(shù)

外部函數(shù)變量(x,y):內(nèi)部函數(shù)必須引用外部函數(shù)變量

ps.可以發(fā)現(xiàn)閉包和高階函數(shù)是結(jié)合在一起使用

三、偏函數(shù)

定義:通過(guò)固定函數(shù)的部分參數(shù)值從而達(dá)到新建函數(shù)的作用

例:

def add(x,y):

return x+y

import functools

add_1 = functools.partial(add,x = 10)

print add_1(y=1) #等價(jià)于 add(x=10,y=1)

11

四、柯里化

定義:把有多個(gè)參數(shù)的函數(shù)變成單參數(shù)函數(shù) 公式:z = f(x, y) 變成 z = f(x)(y)

例:

def add(x, y):

return x+y

print add(1, 2)

3

def add(x):

def add_1(y):

return x + y

return add_1

print add(1)(2)

3

柯里化的偏函數(shù)應(yīng)用

add_1 = add(x=1)

print add_1(y=2)

3

ps.python中只能對(duì)第一個(gè)參數(shù)做偏函數(shù)化(或者說(shuō)只能是從外到內(nèi)逐次參數(shù)做偏函數(shù)化)

五、惰性計(jì)算

理解:表達(dá)式不在它被綁定到變量之后就立即求值,而是在該值被取用的時(shí)候求值;邏輯處理與具體運(yùn)算時(shí)間分離,只有當(dāng)提交具體執(zhí)行計(jì)算任務(wù)時(shí),邏輯處理才開始運(yùn)算

六、只用"表達(dá)式"

理解(百度百科):"表達(dá)式"(expression)是一個(gè)單純的運(yùn)算過(guò)程,總是有返回值。也就是說(shuō),每一步都是單純的運(yùn)算,而且都有返回值。

七、沒有"副作用"

理解:不產(chǎn)生除函數(shù)返回結(jié)果以外的任何影響(不修改任何外部變量)

八、引用透明性

理解:輸入相同的參數(shù)返回相同的結(jié)果;計(jì)算結(jié)果不依賴除輸入?yún)?shù)外的其他因素的影響

總結(jié):

函數(shù)式編程優(yōu)點(diǎn)

1、將問題處理拆解為各執(zhí)行步驟:處理邏輯清晰、代碼可讀性高、后期易維護(hù)更新

2、通過(guò)使用已有的函數(shù),大幅減少代碼量,提高編程效率

3、將邏輯處理和具體計(jì)算分離,通過(guò)組件化編程,降低使用者技術(shù)門檻(復(fù)雜邏輯處理由技術(shù)較好的人員事先實(shí)現(xiàn)準(zhǔn)備好)

總結(jié)

以上是生活随笔為你收集整理的python函数式编程思想_以python为例,浅谈函数式编程思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。