你想知道python裝飾器的由來嗎?

前言

python decorator是一個(gè)很好的特性,大師級(jí)的decorator會(huì)讓你的編程思路更寬泛,程序更為python式?,F(xiàn)在我們來談?wù)凱ython的裝飾器。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供渠縣網(wǎng)站建設(shè)、渠縣做網(wǎng)站、渠縣網(wǎng)站設(shè)計(jì)、渠縣網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、渠縣企業(yè)網(wǎng)站模板建站服務(wù),十余年渠縣做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

裝飾器存在兩種應(yīng)用場(chǎng)景,一種是增強(qiáng)裝飾函數(shù)的行為,另一種是代碼重用。
讓我們先看一個(gè)例子并獲得直觀的感覺。

你想知道python裝飾器的由來嗎?

輸出:

你想知道python裝飾器的由來嗎?


這個(gè)裝飾器是用來計(jì)算函數(shù)執(zhí)行時(shí)間的。原本test1函數(shù)只是休眠1秒,然后輸出字符串,但是在使用裝飾器(out_wrapper)后,它的功能多了一項(xiàng):輸出執(zhí)行時(shí)間。 這是一個(gè)最簡(jiǎn)單的裝飾器,實(shí)現(xiàn)了 “增強(qiáng)被裝飾函數(shù)的行為”。而我們需要思考的是為什么裝飾器是這個(gè)樣子的? 那是因?yàn)樾袨榱己玫难b飾器必須要遵守兩個(gè)原則:

1、不能修改被裝飾函數(shù)的代碼;

2、不能修改被裝飾函數(shù)的調(diào)用方式;

這并不難以理解,因?yàn)樵谏a(chǎn)環(huán)境中如果我們要給某個(gè)函數(shù)添加功能,最好不要修改該函數(shù)的源碼,因?yàn)榭赡茉斐梢庀氩坏降挠绊懀蛘哌@個(gè)代碼是一個(gè)大神寫的,你根本不知從何改起;同時(shí)你也不能修改其調(diào)用方式,因?yàn)槟悴恢莱绦蛑杏卸嗌俚胤秸{(diào)用了此函數(shù)。
那么我們從函數(shù)和函數(shù)名說起吧。

你想知道python裝飾器的由來嗎?

輸出:

你想知道python裝飾器的由來嗎?


定義函數(shù)func,調(diào)用函數(shù)func,將函數(shù)名func賦值給y,調(diào)用y。y=func 表明:函數(shù)名可以賦值給變量,并且并不影響調(diào)用。

小編推薦一個(gè)學(xué)python的學(xué)習(xí)qun 740,3222,34
無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

這其實(shí)和整數(shù)、數(shù)字是一樣的:

你想知道python裝飾器的由來嗎?

明白了這一點(diǎn),下面再說說高階函數(shù): 高階函數(shù)滿足如下兩個(gè)條件中的任意一個(gè): a. 可以接收函數(shù)名作為實(shí)參; b. b.返回值中可以包含函數(shù)名;

其實(shí)python標(biāo)準(zhǔn)庫中的map和filter等函數(shù)就是高階函數(shù)。

你想知道python裝飾器的由來嗎?

自定義一個(gè)能返回函數(shù)的函數(shù),也是高階函數(shù)

def f(l): return map(lambda x: x*5, l)
a = f(l)for i in a: 
print(i)
你想知道python裝飾器的由來嗎?

有了這些基礎(chǔ),我們就可以嘗試實(shí)現(xiàn)一下類似裝飾器的功能了。

總結(jié)

裝飾器的本質(zhì)是函數(shù),其參數(shù)是另一個(gè)函數(shù)(被裝飾的函數(shù))。 裝飾器通常會(huì)額外處理被裝飾的函數(shù),然后把它返回,或者將其替換成另一個(gè)函數(shù)或可調(diào)用對(duì)象。行為良好的裝飾器可以重用,以減少代碼量。


素材來源于網(wǎng)絡(luò):侵刪

網(wǎng)站題目:你想知道python裝飾器的由來嗎?
分享URL:http://muchs.cn/article32/ihsjpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站制作、企業(yè)建站App開發(fā)、動(dòng)態(tài)網(wǎng)站、云服務(wù)器

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)