新聞中心
這篇文章主要介紹“Python裝飾器怎么實(shí)現(xiàn)”,在日常操作中,相信很多人在Python裝飾器怎么實(shí)現(xiàn)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Python裝飾器怎么實(shí)現(xiàn)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
武勝ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
上面是按下按鈕1就存款,否則則取款。
不對(duì),存取款要輸入密碼啊?。?!所以,我們要加密碼驗(yàn)證代碼。
可以看到,雖然實(shí)現(xiàn)了密碼驗(yàn)證功能,但是代碼冗余度比較高,而且現(xiàn)在只模擬了取款和存款功能,然而還有查詢功能,轉(zhuǎn)賬功能等等,那么冗余度就更高了,而且相對(duì)于取款和存款函數(shù)來(lái)說(shuō),復(fù)用性沒(méi)有那么高,所以我們要進(jìn)一步優(yōu)化代碼,把驗(yàn)證函數(shù)寫到取款和存款函數(shù)內(nèi)部。
有沒(méi)有什么方法,可以在不改變?cè)瘮?shù)以及原函數(shù)的調(diào)用的情況下擴(kuò)展原函數(shù)的功能呢?當(dāng)然是有的,這就是python中著名的裝飾器。還是使用上面的代碼來(lái)演示
從現(xiàn)在開(kāi)始,上面紅框的代碼不再進(jìn)行更改,打死也不改,我們來(lái)實(shí)現(xiàn)有密碼驗(yàn)證的存取款功能。
裝飾器裝飾有參函數(shù)
看下面這段代碼
大家看看這段代碼有沒(méi)有什么問(wèn)題?
運(yùn)行結(jié)果
看報(bào)錯(cuò)原因就知道,inner()函數(shù)多了一個(gè)參數(shù)。大家一定要注意一點(diǎn),因?yàn)檠b飾器函數(shù)的返回值是inner,也就是說(shuō)現(xiàn)在myprint是等同于inner的。
我們來(lái)改一下代碼
為了使裝飾器能夠裝飾更多函數(shù),我們進(jìn)一步優(yōu)化代碼。
裝飾器裝飾有返回值函數(shù)
如圖可以看到,無(wú)論被裝飾的函數(shù)有無(wú)返回值,其結(jié)果都無(wú)返回值,原因其實(shí)很簡(jiǎn)單,因?yàn)閕nner()函數(shù)根本就沒(méi)有返回值。為了實(shí)現(xiàn)有返回值的函數(shù)被裝飾之后仍然有返回值,需要inner函數(shù)與被裝飾函數(shù)的返回值保持一致。
可以看到,有返回值的函數(shù)被裝飾之后依然有返回值,沒(méi)有返回值的函數(shù)被裝飾之后則沒(méi)有返回值,符合我們想要的結(jié)果。
雙重語(yǔ)法糖
為了更加直觀地演示雙重語(yǔ)法糖,我就不再使用上面的例子了。
我先來(lái)定義一個(gè)函數(shù)
現(xiàn)在我有一個(gè)需求,我想在'python小白聯(lián)盟'的上面打印一行'='和一行'*',也就是要實(shí)現(xiàn)這種效果。
那么應(yīng)該怎么寫呢?大家可能都會(huì)想到語(yǔ)法糖的疊加,那疊加的方式是以下哪一種呢?
我們來(lái)運(yùn)行一下就知道了
可以看到,疊加的方式應(yīng)該是***種,也就是說(shuō)最外層的語(yǔ)法糖先執(zhí)行。
帶參數(shù)的語(yǔ)法糖
為了演示帶參數(shù)的語(yǔ)法糖,我再把上面的一張圖搬下來(lái)
顯然,紅框部分的代碼冗余度比較高,我們可以使用帶參的語(yǔ)法糖來(lái)進(jìn)行簡(jiǎn)化
到此,關(guān)于“Python裝飾器怎么實(shí)現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)站名稱:Python裝飾器怎么實(shí)現(xiàn)
文章出自:http://www.dlmjj.cn/article/psgehj.html