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

2021-09-13 09:11:28 字數 1310 閱讀 4405

functional programming,函式式程式設計。python對函式式程式設計提供部分支援。對於純函式程式設計,對任一函式,只要輸入是確定的,輸出就是確定的,可稱之為無***。

我們知道函式的計算結果可以賦值給變數,例如x = abs(-5)

同理,變數也可以指向函式,例如f = abs

如果乙個變數指向了乙個函式,那我們直接呼叫abs(x)與執行f(x)返回的結果是完全相同。

我們也可以把函式名看成是乙個變數,例如abs()函式。執行語句abs=-5,之後呼叫abs(-5)就會報錯,因為此時abs這個變數已經不指向絕對值函式了,而是指向乙個整數-5。

既然變數可以指向函式,函式也可以充當變數,那麼乙個函式就可以接收另外乙個函式作為它自己的形式引數,即實現高階函式。例如:

>>> def add(x , y ,  f ): # 把函式作為引數傳入。

... return f(x) + f(y)

>>> add (-5,-2,abs)

7

舉個栗子:用map()實現f(x)=x*x

>>> def f(x):

... return x*x

...>>> map(f,[1,2,3,4,5])

>>> list(map(f,[1,2,3,4,5])) # 傳入的函式f作用於序列的每個元素調並用list()

[1, 4, 9, 16, 25]

當然還可以使用其他方法實現:

exp1:list( map((lambda x:x*x),[1,2,3,4,5]))

exp2:[x*x for x in [1,2,3,4,5]]

大家可以自己找個栗子玩玩哈~~~

舉個栗子:在乙個list中,刪除偶數,保留奇數。

>>> def is_odd(n):

... return n % 2 == 1 # 返回0(false) 或1(true)

...>>> list( filter(is_odd,[1,2,3,4,5,6,7,8,9]) )

[1, 3, 5, 7, 9]

恩,寫到這吧,給自己乙個任務,明天寫「閉包」部分。

❤ thanks for watching, keep on updating...

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

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

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

三大特性 immutable data不可變資料 first class functions函式像變數一樣使用 尾遞迴優化 每次遞迴都重用stack 好處 parallelization並行 lazy evaluation惰性求值 determinism 確定性 函式式程式設計 map reduce...

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

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