python函式式程式設計 高階函式 偏函式

2021-10-07 21:14:01 字數 1799 閱讀 4045

三大特性:

immutable data不可變資料

first class functions函式像變數一樣使用

尾遞迴優化:每次遞迴都重用stack

好處:parallelization並行

lazy evaluation惰性求值

determinism 確定性

函式式程式設計

map & reduce

pipeline

recursing 遞迴

currying

higher order function 高階函式

def

inc(x)

:def

incx

(y):

return x + y

return incx

inc2 = inc(2)

inc5 = inc(5)

print inc2(5)

# 輸出 7

print inc5(5)

# 輸出 10

可以把別的函式作為引數傳入的函式,叫高階函式

f =

abs>>

> f =

abs>>

> f(-10

)10>>

>

python中函式本身也是物件,可以直接作為變數,作為引數使用

deffunc1

(x, y, f)

:return f(x)

+ f(y)

>>

> func1(3,

-5,abs)8

>>

>

python中functools提供了很多有用的功能,偏函式(partial func)即只設定部分引數,含預設引數的函式。

int('12345')int()函式進製base作為arg2。可以不指定,預設base=10

int('1234',base=8)

def

int2

(x, base=2)

:# 定義乙個二進位制數轉換為十進位制

return

int(x, base)

functools.partial 幫我們建立偏函式,不需要我們自定義int2(

), 使用方式如下:

import functools

int2 = functools.partial(

int, base=2)

int2(

'10000'

)

疑問? 如果func是更多引數的呢? 對預設引數設定格式? 如果動態改變的引數在中間,如何使用這 partial?

類似地,可以對多個預設引數,以dict的格式帶入

kw =

int(

'10000'

,**kw)

# 因為int本身就是偏函式

類似地,也可以對偏函式應用list

list1 =[8

,9,12

]mymax = functools.partial(

max,10)

mymax(5,

6,7,

8)mymax(

*list1)

>>

> mymax(5,

6,7,

8)10>>

> mymax(

*list1)

12>>

>

Python 函式式程式設計 高階函式

functional programming,函式式程式設計。python對函式式程式設計提供部分支援。對於純函式程式設計,對任一函式,只要輸入是確定的,輸出就是確定的,可稱之為無 我們知道函式的計算結果可以賦值給變數,例如x abs 5 同理,變數也可以指向函式,例如f abs。如果乙個變數指向了...

Python函式式程式設計 高階函式

高階函式 1.實參是乙個函式名 2.函式的返回值是乙個函式 函式本身也可以賦值給變數,變數也可以指向函式 f abs print f 10 傳遞的引數包括函式名 deffun x,y,f return f x f y print fun 10 23,abs map 函式接收兩個引數,乙個是函式,乙個...

Python 函式式程式設計 01 高階函式

函式式程式設計是一種抽象程式很高的程式設計正規化,純粹的函式式程式語言編寫的函式沒有變數,因此,任意乙個函式,只要輸入是確定的,輸出就是確定的,這種純函式稱之為沒有 而允許使用變數的程式語言,由於函式內部的變數狀態不確定,同樣的輸入,可能得到的輸出不同,因此,這種函式是有 的。2.1 特性 1 變數...