欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

前言

python decorator是一個很好的特性,大師級的decorator會讓你的編程思路更寬泛,程序更為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)用場景,一種是增強(qiáng)裝飾函數(shù)的行為,另一種是代碼重用。
讓我們先看一個例子并獲得直觀的感覺。

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

輸出:

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


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

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

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

這并不難以理解,因?yàn)樵谏a(chǎn)環(huán)境中如果我們要給某個函數(shù)添加功能,最好不要修改該函數(shù)的源碼,因?yàn)榭赡茉斐梢庀氩坏降挠绊?,或者這個代碼是一個大神寫的,你根本不知從何改起;同時(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)用。

小編推薦一個學(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ù)滿足如下兩個條件中的任意一個: a. 可以接收函數(shù)名作為實(shí)參; b. b.返回值中可以包含函數(shù)名;

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

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

自定義一個能返回函數(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ù)是另一個函數(shù)(被裝飾的函數(shù))。 裝飾器通常會額外處理被裝飾的函數(shù),然后把它返回,或者將其替換成另一個函數(shù)或可調(diào)用對象。行為良好的裝飾器可以重用,以減少代碼量。


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

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

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

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

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