高階函數(shù)
能接受函數(shù)做參數(shù)的函數(shù)
變量可以指向函數(shù)
函數(shù)的參數(shù)可以接受變量
一個(gè)函數(shù)可以接受另外一個(gè)函數(shù)作為參數(shù)
能接收函數(shù)作參數(shù)的函數(shù)就是高階函數(shù)
def add(x,y,f):
return f(x) + f(y)
print(add(1,-2,abs))
結(jié)果:3
map() 函數(shù)
是 python 內(nèi)置的高階函數(shù)
map(f,list),接收一個(gè)函數(shù) f乖菱,和一個(gè) list 集合坡锡,將函數(shù) f 依次作用在 list 集合上蓬网,返回一個(gè)新的集合。
def f(x):
return x*x
list = [1,2,3]
new_list = map(f,list)
for i in new_list:
print(i)
結(jié)果:1 4 9
reduce() 函數(shù)
在python3中去掉了
filter() 函數(shù)
filter()函數(shù)接收一個(gè)函數(shù) f 和一個(gè)list鹉勒,這個(gè)函數(shù) f 的作用是對(duì)每個(gè)元素進(jìn)行判斷帆锋,返回 True或 False,filter()根據(jù)判斷結(jié)果自動(dòng)過(guò)濾掉不符合條件的元素禽额,返回由符合條件元素組成的新list锯厢。
def is_odd(x):
return x % 2 == 1
filter(is_odd, [1, 4, 6, 7, 9, 12, 17])
結(jié)果為:[1, 7, 9, 17]
sorted() 函數(shù)
age_list = [56,23,45,12,2]
new_age_list = sorted(age_list)
for i in new_age_list:
print(i)
匿名函數(shù) lambda
關(guān)鍵字lambda 表示匿名函數(shù),:前面的為函數(shù)的參數(shù)
map(lambda x : x * x脯倒,list)
decorator 裝飾器
極大的簡(jiǎn)化代碼哲鸳,避免每個(gè)函數(shù)編寫(xiě)重復(fù)性的代碼
本質(zhì)上是一個(gè)高階函數(shù),接收一個(gè)函數(shù)作為參數(shù)盔憨,然后徙菠,返回一個(gè)新函數(shù)
@log
調(diào)用函數(shù)時(shí)候,打印信息