日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

數據集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-函數式編程:

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

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

那什么是函數式編程:

函數式編程定義

定義(百度百科):函數式編程是種編程方式,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是λ演算(lambda calculus),而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。簡單說,"函數式編程"是一種"編程范式"(programming paradigm),也就是如何編寫程序的方法論。它屬于"結構化編程"的一種,主要思想是把運算過程盡量寫成一系列嵌套的函數調用。

特性

一、高階函數

和一般函數差別:

1、輸入參數可以是函數

2、輸出結果可以是函數

例(python2.7,下同):

輸出結果可以是函數

def add(x,y):

def add_1():

return x+y

return add_1

add_1=add(1,2)

print add_1

輸入參數可以是函數

def add(x,y):

return x+y

def add_square(add):

return add*add

計算

print add_square(add(1,2))

9

二、閉包

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

構成(必要):

1、外部函數

2、內部函數

3、外部函數變量

例:

def add(x,y):

def add_1():

return x+y

return add_1

外部函數(add):必須將內部函數作為返回

內部函數(add_1):必須要有一個內部函數

外部函數變量(x,y):內部函數必須引用外部函數變量

ps.可以發現閉包和高階函數是結合在一起使用

三、偏函數

定義:通過固定函數的部分參數值從而達到新建函數的作用

例:

def add(x,y):

return x+y

import functools

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

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

11

四、柯里化

定義:把有多個參數的函數變成單參數函數 公式: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

柯里化的偏函數應用

add_1 = add(x=1)

print add_1(y=2)

3

ps.python中只能對第一個參數做偏函數化(或者說只能是從外到內逐次參數做偏函數化)

五、惰性計算

理解:表達式不在它被綁定到變量之后就立即求值,而是在該值被取用的時候求值;邏輯處理與具體運算時間分離,只有當提交具體執行計算任務時,邏輯處理才開始運算

六、只用"表達式"

理解(百度百科):"表達式"(expression)是一個單純的運算過程,總是有返回值。也就是說,每一步都是單純的運算,而且都有返回值。

七、沒有"副作用"

理解:不產生除函數返回結果以外的任何影響(不修改任何外部變量)

八、引用透明性

理解:輸入相同的參數返回相同的結果;計算結果不依賴除輸入參數外的其他因素的影響

總結:

函數式編程優點

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

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

3、將邏輯處理和具體計算分離,通過組件化編程,降低使用者技術門檻(復雜邏輯處理由技術較好的人員事先實現準備好)

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。