1.什么是閉包?
多層函數(shù)嵌套,(函數(shù)里面還有定義函數(shù),一般是兩個(gè)),往往內(nèi)層函數(shù)會(huì)用到外層函數(shù)的變量,把內(nèi)層函數(shù)以及外部函數(shù)的變量當(dāng)成一個(gè)特殊的對(duì)象,這就是閉包。閉包比面向?qū)ο蟾儍?、更輕量,既有數(shù)據(jù)又有執(zhí)行數(shù)據(jù)的代碼;比普通函數(shù)功能更強(qiáng)大,不僅有代碼還有數(shù)據(jù);
2.匿名函數(shù)、普通函數(shù)、閉包、面向?qū)ο蟮膮^(qū)別?
1). 匿名函數(shù)能夠完成基本的簡(jiǎn)單功能,傳遞是這個(gè)函數(shù)的引用 只有功能。
2). 普通函數(shù)能夠完成較為復(fù)雜的功能,傳遞是這個(gè)函數(shù)的引用 只有功能。
3). 閉包能夠?qū)⑤^為復(fù)雜的功能,傳遞是這個(gè)閉包中的函數(shù)以及數(shù)據(jù)。
4). 對(duì)象能夠完成最為復(fù)雜的功能,傳遞是數(shù)據(jù)+功能,但占用大量空間,浪費(fèi)資源。
3.什么是裝飾器?
利用閉包的基本原理,對(duì)一個(gè)目標(biāo)函數(shù)進(jìn)行裝飾,即在執(zhí)行一個(gè)目標(biāo)函數(shù)之前、之后執(zhí)行一些特定的事情。
通用的裝飾器示例如下:
def set_func(func):
print("---開(kāi)始進(jìn)行裝飾")
def call_func(*args, kwargs):
print("---這是目標(biāo)函數(shù)之前做的事情----") # 如果需要的話
ret = func(*args, * kwargs) # 拆包
print("---這是目標(biāo)函數(shù)之后做的事情----") # 如果需要的話
return ret # 如果需要有返回值的話可以加上返回值
return call_func
@set_func # 相當(dāng)于 test1 = set_func(test1)
def test1(args,kwargs):
"""函數(shù)內(nèi)部要做的功能"""
return "ok" # 如果需要的話,否則就返回None
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:Python之閉包裝飾器-創(chuàng)新互聯(lián)
分享地址:http://www.rwnh.cn/article24/cejece.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、建站公司、品牌網(wǎng)站制作、微信小程序、網(wǎng)站營(yíng)銷、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容