既然變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。
乙個最簡單的高階函式:
def
add(x, y, f):
return f(x) + f(y)
當我們呼叫add(-5, 6, abs)
時,引數x
,y
和f
分別接收-5
,6
和abs
map()
>>>
deff
(x):
...
return x * x
...>>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
把這個list所有數字轉為字串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce()
reduce把乙個函式作用在乙個序列[x1, x2, x3...]上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
如果要把序列[1, 3, 5, 7, 9]
變換成整數13579,reduce就可以派上用場:
>>>
deffn
(x, y):
...
return x * 10 + y
...>>> reduce(fn, [1, 3, 5, 7, 9])
13579
出把str
轉換為int
的函式:
>>>
deffn
(x, y):
...
return x * 10 + y
...>>>
defchar2num
(s):
...
return [s]
...>>> reduce(fn, map(char2num, '13579'))
13579
Python學習筆記 高階函式
高階函式的概念是我在學習kotlin的時候才接觸到的,後來才發現很多語言都有該特性。簡單的定義為 把函式作為引數傳入另乙個函式中 例如 def add x,y,f return f x f y print add 5,6,abs 其中,abs函式作為引數傳到add函式中,add函式就可以稱為高階函式...
Python 學習筆記 5 1 高階函式
高階函式英文叫higher order function。什麼是高階函式?我們以實際 為例子,一步一步深入概念。以python內建的求絕對值的函式abs 為例,呼叫該函式用以下 abs 10 10但是,如果只寫abs呢?abs infunction abs 可見,abs 10 是函式呼叫,而abs是...
python高階學習筆記(一) 高階函式
filter filter 函式接收乙個 函式 f 和乙個list 這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如,要從乙個list 1,4,6,7,9,12,17 中刪除偶數,保...