python高階函數(shù)使用教程示例
一、高階函數(shù)
函數(shù)定義
python中,函數(shù)名是變量,下方這個(gè)method函數(shù)名看成變量,指向一個(gè)計(jì)算的函數(shù)!因此函數(shù)名其實(shí)就是指向函數(shù)的變量,故變量可指向函數(shù);
變量可指向函數(shù),且函數(shù)的變量可接受變量,那么任意一個(gè)函數(shù)可接受一個(gè)函數(shù)作為參數(shù),這種函數(shù)就叫高階函數(shù)
函數(shù)名可作為返回值、也可作為參數(shù)
def method(a,b): return a+b a = method print(a(1,4)) #輸出; 5
(1)函數(shù)名作為參數(shù)
def fun(a): return a*a def fun1(a,b,c): return a(b)+a(c) print(fun1(fun(),1,5)) # fun()作為參數(shù),傳給fun1 #輸出:26
(2)函數(shù)名作為返回值
def fun(a):
def fun2(b):
return a*b
return fun2()
a = fun(1)
print(a) #外部函數(shù)返回的是一個(gè)函數(shù)對(duì)象,也就是一個(gè)變量,然后作為函數(shù)對(duì)象傳參,獲得內(nèi)部函數(shù)的返回值
print(a(3))
# 輸出:<function method.<locals>.method2 at 0x02B5E9C0>
6
二、常用的高階函數(shù)
map、filter、reduce
先講下匿名函數(shù)lambda,
語(yǔ)法格式:lambda[形參1,形參2,... :表達(dá)式]
表達(dá)式執(zhí)行后,返回冒號(hào)后表達(dá)式;
x = 1 lambda x:x+3
(1)map(function,iterable)
它第一個(gè)要傳的元素是函數(shù)名或lambda匿名函數(shù)表達(dá)式,第二個(gè)要傳的是可迭代對(duì)象;
python 2.x 返回列表,python 3.x 返回迭代器
array = [1,4,7] a = map(lambda x:x+1,array) print(a) print(list(a)) 輸出:<map object at 0x02AB11B0> [2, 5, 8]
map()函數(shù)的作用就是將可迭代對(duì)象里的每個(gè)元素進(jìn)行函數(shù)操作,然后將元素操作后所組成的可迭代對(duì)象返回
(2)filter(function, iterable)
同樣,它第一個(gè)要傳的元素是函數(shù)名或lambda匿名函數(shù)表達(dá)式,第二個(gè)要傳的是可迭代對(duì)象
array = [1,4,7] a = filter(lambda x:x+1,array) print(a) print(list(a)) 輸出:<filter object at 0x02AB11B0> [1,4,7]
array = [1,4,7] a = filter(lambda x:x%2==0,array) print(a) print(list(a)) 輸出:<filter object at 0x02AB11B0> [4]
filter函數(shù),就是將可迭代對(duì)象的元素帶入函數(shù),返回True的對(duì)象,一般用于篩選使用,省略for循環(huán)
(3)reduce(function, iterable)
它傳的是2個(gè)元素,將前2個(gè)元素帶入函數(shù)中,然后將返回值作為一個(gè)元素,與第三個(gè)元素進(jìn)行運(yùn)算,直到結(jié)束返回最后結(jié)果。
reduce(function, iterable[, initializer]),從左到右對(duì)一個(gè)序列的項(xiàng)進(jìn)行累計(jì)
reduce() 函數(shù)在 python2 中是內(nèi)置函數(shù),在 python3 中放到了 functools 模塊下:
from functools import reduce array = [1,2,3,4,5] result = reduce(lambda x,y:x+y,array) print(result) #結(jié)果:15 1+2 = 3 3+3 = 6 6+4=10 10+5=15
以上就是python高階函數(shù)使用教程示例的詳細(xì)內(nèi)容,更多關(guān)于python高階函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)操縱控制windows注冊(cè)表的方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)操縱控制windows注冊(cè)表的方法,結(jié)合實(shí)例形式分析了Python使用_winreg模塊以及win32api模塊針對(duì)Windows注冊(cè)表操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
使用 Python 實(shí)現(xiàn)簡(jiǎn)單的 switch/case 語(yǔ)句的方法
這篇文章主要介紹了用 Python 實(shí)現(xiàn)簡(jiǎn)單的 switch/case 語(yǔ)句的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
python3?cookbook解壓可迭代對(duì)象賦值給多個(gè)變量的問(wèn)題及解決方案
這篇文章主要介紹了python3?cookbook-解壓可迭代對(duì)象賦值給多個(gè)變量,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
代碼解析python標(biāo)準(zhǔn)庫(kù)logging模塊
這篇文章主要為大家介紹了代碼解析python標(biāo)準(zhǔn)庫(kù)logging模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python通過(guò)30秒就能學(xué)會(huì)的漂亮短程序代碼(過(guò)程全解)
這篇文章主要介紹了Python之30秒就能學(xué)會(huì)的漂亮短程序代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10

