真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python裝飾器怎么實現(xiàn)

這篇文章主要介紹“Python裝飾器怎么實現(xiàn)”,在日常操作中,相信很多人在Python裝飾器怎么實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python裝飾器怎么實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

武勝ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

Python裝飾器怎么實現(xiàn)  

Python裝飾器怎么實現(xiàn)  

上面是按下按鈕1就存款,否則則取款。

不對,存取款要輸入密碼?。。。∷?,我們要加密碼驗證代碼。

Python裝飾器怎么實現(xiàn)

可以看到,雖然實現(xiàn)了密碼驗證功能,但是代碼冗余度比較高,而且現(xiàn)在只模擬了取款和存款功能,然而還有查詢功能,轉(zhuǎn)賬功能等等,那么冗余度就更高了,而且相對于取款和存款函數(shù)來說,復(fù)用性沒有那么高,所以我們要進(jìn)一步優(yōu)化代碼,把驗證函數(shù)寫到取款和存款函數(shù)內(nèi)部。

Python裝飾器怎么實現(xiàn)  

Python裝飾器怎么實現(xiàn)  

有沒有什么方法,可以在不改變原函數(shù)以及原函數(shù)的調(diào)用的情況下擴(kuò)展原函數(shù)的功能呢?當(dāng)然是有的,這就是python中著名的裝飾器。還是使用上面的代碼來演示

Python裝飾器怎么實現(xiàn)  

從現(xiàn)在開始,上面紅框的代碼不再進(jìn)行更改,打死也不改,我們來實現(xiàn)有密碼驗證的存取款功能。

Python裝飾器怎么實現(xiàn)  

Python裝飾器怎么實現(xiàn)  

裝飾器裝飾有參函數(shù)

看下面這段代碼

Python裝飾器怎么實現(xiàn)  

大家看看這段代碼有沒有什么問題?

運行結(jié)果

Python裝飾器怎么實現(xiàn)  

看報錯原因就知道,inner()函數(shù)多了一個參數(shù)。大家一定要注意一點,因為裝飾器函數(shù)的返回值是inner,也就是說現(xiàn)在myprint是等同于inner的。

我們來改一下代碼

Python裝飾器怎么實現(xiàn)  

為了使裝飾器能夠裝飾更多函數(shù),我們進(jìn)一步優(yōu)化代碼。

Python裝飾器怎么實現(xiàn)  

裝飾器裝飾有返回值函數(shù)

Python裝飾器怎么實現(xiàn)  

如圖可以看到,無論被裝飾的函數(shù)有無返回值,其結(jié)果都無返回值,原因其實很簡單,因為inner()函數(shù)根本就沒有返回值。為了實現(xiàn)有返回值的函數(shù)被裝飾之后仍然有返回值,需要inner函數(shù)與被裝飾函數(shù)的返回值保持一致。

Python裝飾器怎么實現(xiàn)  

可以看到,有返回值的函數(shù)被裝飾之后依然有返回值,沒有返回值的函數(shù)被裝飾之后則沒有返回值,符合我們想要的結(jié)果。

雙重語法糖

為了更加直觀地演示雙重語法糖,我就不再使用上面的例子了。

我先來定義一個函數(shù)

Python裝飾器怎么實現(xiàn)  

現(xiàn)在我有一個需求,我想在'python小白聯(lián)盟'的上面打印一行'='和一行'*',也就是要實現(xiàn)這種效果。

Python裝飾器怎么實現(xiàn)  

那么應(yīng)該怎么寫呢?大家可能都會想到語法糖的疊加,那疊加的方式是以下哪一種呢?

Python裝飾器怎么實現(xiàn)  

Python裝飾器怎么實現(xiàn)  

我們來運行一下就知道了

Python裝飾器怎么實現(xiàn)  

可以看到,疊加的方式應(yīng)該是***種,也就是說最外層的語法糖先執(zhí)行。

帶參數(shù)的語法糖

為了演示帶參數(shù)的語法糖,我再把上面的一張圖搬下來

Python裝飾器怎么實現(xiàn)  

顯然,紅框部分的代碼冗余度比較高,我們可以使用帶參的語法糖來進(jìn)行簡化

Python裝飾器怎么實現(xiàn)  

到此,關(guān)于“Python裝飾器怎么實現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文標(biāo)題:Python裝飾器怎么實現(xiàn)
網(wǎng)站鏈接:http://weahome.cn/article/psgehj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部