該篇中主要介紹什麼是高階函式,高階函式的用法以及幾個常見的內建的高階函式。
什麼是高階函式?
高階函式
:乙個函式可以作為引數傳給另外乙個函式,或者乙個函式的返回值為另外乙個函式(若返回值為該函式本身,則為遞迴),滿足其一則為高階函式。
高階函式 map、filter、reduce、sorted
def fn(x):
return x*x
r=map(fn,[1,2,3,4,5,6,7,8])
print(list(r))
結果: [1, 4, 9, 16, 25, 36, 49, 64]
#把序列[1, 3, 5, 7, 9]變換成整數13579
from functools import reduce
def fn(x, y):
return x*10+y
print(reduce(fn, [1, 3, 5, 7, 9]))
結果:13579
# 把乙個序列中的空字串刪掉,可以這麼寫
def not_empty(s):
return s and s.strip()
arr=list(filter(not_empty, ['a', '', 'b', none, 'c', ' ']))
print(arr)
結果:['a', 'b', 'c']
注:
1.用filter()這個高階函式,關鍵在於正確實現乙個「篩選」函式。
2.注意到filter()函式返回的是乙個iterator,也就是乙個惰性序列,所以要強迫filter()完成計算結果,需要用list()函式獲得所有結果並返回list。
python內建的sorted()函式就可以對list進行排,它還可以接收乙個key函式來實現自定義的排序,例如按絕對值大小排序:
#預設正序reverse=false ,reverse=true 反向排序
a = sorted([36, 5, -12, 9, -21], key=abs,reverse=false)
print(a)
結果:[5, 9, -12, -21, 36]
python 函式高階 python 函式高階
形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...
Python高階 函式高階
閉包 closure 常規函式中可以在函式的引數中新增引數的預設值來簡化函式的操作,偏函式也可以做到這一點,而且會更加的方便管理函式的操作。通過內建模組functools的partial進行定義和處理 語法結構 新函式名稱 functools.partial 函式名稱,預設賦值引數 例如 全域性函式...
python 函式 高階函式
filter 函式是 python 內建的另乙個有用的高階函式,filter 函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter 根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。例如判斷奇偶數 def...