什么是高階函數(shù)?
創(chuàng)新互聯(lián)建站是專業(yè)的梅里斯網(wǎng)站建設(shè)公司,梅里斯接單;提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行梅里斯網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!一個(gè)函數(shù)的參數(shù)是否可以接受另外一個(gè)函數(shù)作為參數(shù),這樣的函數(shù)就叫做高階函數(shù)。
最簡單的高階函數(shù)實(shí)例:
def func(x,y,z):
return z(x)+z(y)
print(func(-20,-10,abs))
返回函數(shù)
高階函數(shù)除了可以接收函數(shù)參數(shù)之外,還可以把函數(shù)作為返回值
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a = func(1,2,3,4,5,6)
print(a())
結(jié)果是:21
內(nèi)部函數(shù)可以引用外部函數(shù)的參數(shù)和局部變量,當(dāng)外部函數(shù)返回內(nèi)部函數(shù)時(shí),相關(guān)參數(shù)和變量都保存在返回的函數(shù)當(dāng)中,這就是閉包。
當(dāng)調(diào)用外部func函數(shù)的時(shí)候,每次調(diào)用都是返回一個(gè)新的的函數(shù),即使傳值是一致的,也會(huì)不一樣。例子如下:
def func(*args):
def sum():
ax = 0
for n in args:
ax+=n
return ax
return sum
a1 = func(1,2,3,4,5,6)
a2 = func(1,2,3,4,5,6)
print(a1==a2)
結(jié)果返回是False。
但是如果print(a1()==a2())是True ,調(diào)用的值是一樣的!
def count():
fs = []
for i in range(1,5):
def f():
return i*i*i
fs.append(f)
return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())
結(jié)果是:
64
64
64
64
--------------------------------------------------------------
def count():
def f(i):
def func():
return i*i
return func
fs = []
for var in range(1,5):
fs.append(f(var))
return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())
結(jié)果是:
1
4
9
16
劃重點(diǎn):返回函數(shù)不要應(yīng)用任何循環(huán)變量,或者后面會(huì)發(fā)生改變的變量。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。