高階函數
能接受函數做參數的函數
變量可以指向函數
函數的參數可以接受變量
一個函數可以接受另外一個函數作為參數
能接收函數作參數的函數就是高階函數
def add(x,y,f):
return f(x) + f(y)
print(add(1,-2,abs))
結果:3
map() 函數
是 python 內置的高階函數
map(f,list),接收一個函數 f,和一個 list 集合,將函數 f 依次作用在 list 集合上,返回一個新的集合。
def f(x):
return x*x
list = [1,2,3]
new_list = map(f,list)
for i in new_list:
print(i)
結果:1 4 9
reduce() 函數
在python3中去掉了
filter() 函數
filter()函數接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。
def is_odd(x):
return x % 2 == 1
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
結果為:[1, 7, 9, 17]
sorted() 函數
age_list = [56,23,45,12,2]
new_age_list = sorted(age_list)
for i in new_age_list:
print(i)
匿名函數 lambda
關鍵字lambda 表示匿名函數,:前面的為函數的參數
map(lambda x : x * x,list)
decorator 裝飾器
極大的簡化代碼,避免每個函數編寫重復性的代碼
本質上是一個高階函數,接收一個函數作為參數,然后,返回一個新函數
@log
調用函數時候,打印信息