Python裝飾器

裝飾器本質(zhì)上就是一個(gè)python函數(shù),他可以讓其他函數(shù)在不需要做任何代碼變動(dòng)的前提下稚虎,增加額外的功能撤嫩,裝飾器的返回值也是一個(gè)函數(shù)對象。

裝飾器的應(yīng)用場景:比如插入日志蠢终,性能測試序攘,事務(wù)處理,緩存等等場景寻拂。

完整示例

import time
def timer(func):
    def inner(*args,**kwargs):
        start = time.time()
        re = func(*args,**kwargs)
        print(time.time() - start)
        return re
    return inner

@timer   #==> func1 = timer(func1)
def func1(a,b):
    print('in func1')

@timer   #==> func2 = timer(func2)
def func2(a):
    print('in func2 and get a:%s'%(a))
    return 'fun2 over'

func1('aaaaaa','bbbbbb')
print(func2('aaaaaa'))

解決查看函數(shù)信息的方法失效的問題

from functools import wraps

def deco(func):
    @wraps(func) #加在最內(nèi)層函數(shù)正上方
    def wrapper(*args,**kwargs):
        return func(*args,**kwargs)
    return wrapper

@deco
def index():
    '''哈哈哈哈'''
    print('from index')

print(index.__doc__)
print(index.__name__)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末程奠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兜喻,更是在濱河造成了極大的恐慌梦染,老刑警劉巖赡麦,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朴皆,死亡現(xiàn)場離奇詭異帕识,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)遂铡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門肮疗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扒接,你說我怎么就攤上這事伪货。” “怎么了钾怔?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵碱呼,是天一觀的道長。 經(jīng)常有香客問我宗侦,道長愚臀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任矾利,我火速辦了婚禮姑裂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘男旗。我一直安慰自己舶斧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布察皇。 她就那樣靜靜地躺著茴厉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪什荣。 梳的紋絲不亂的頭發(fā)上呀忧,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音溃睹,去河邊找鬼而账。 笑死,一個(gè)胖子當(dāng)著我的面吹牛因篇,可吹牛的內(nèi)容都是我干的泞辐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼竞滓,長吁一口氣:“原來是場噩夢啊……” “哼咐吼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起商佑,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤锯茄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肌幽,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晚碾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喂急。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片格嘁。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖廊移,靈堂內(nèi)的尸體忽然破棺而出糕簿,到底是詐尸還是另有隱情,我是刑警寧澤狡孔,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布懂诗,位于F島的核電站,受9級(jí)特大地震影響苗膝,放射性物質(zhì)發(fā)生泄漏响禽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一荚醒、第九天 我趴在偏房一處隱蔽的房頂上張望芋类。 院中可真熱鬧,春花似錦界阁、人聲如沸侯繁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贮竟。三九已至,卻和暖如春较剃,著一層夾襖步出監(jiān)牢的瞬間咕别,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工写穴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惰拱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓啊送,卻偏偏與公主長得像偿短,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子馋没,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 部分細(xì)節(jié)自己改了點(diǎn)昔逗,也加了點(diǎn)自己例子,基本上屬于轉(zhuǎn)載篷朵。轉(zhuǎn)載出處:https://my.oschina.net/le...
    洛克黃瓜閱讀 1,976評(píng)論 0 3
  • 一勾怒、史前故事 先看一個(gè)簡單例子婆排,實(shí)際可能會(huì)復(fù)雜很多: 現(xiàn)在有一個(gè)新的需求,希望可以記錄下函數(shù)的執(zhí)行日志笔链,于是在代碼...
    DevinZhang閱讀 837評(píng)論 4 22
  • Python 中的函數(shù)和 Java段只、C++不太一樣,Python 中的函數(shù)可以像普通變量一樣當(dāng)做參數(shù)傳遞給另外一個(gè)...
    stoneyang94閱讀 1,340評(píng)論 1 4
  • 如果看完這一篇文章還不理解裝飾器缚够,這說明我寫的還不夠清晰幔妨、詳細(xì),那請鼓勵(lì)鼓勵(lì)我吧谍椅。 講 Python 裝飾器前误堡,我...
    龍皓晨閱讀 685評(píng)論 0 8
  • 一個(gè)城市沒有湖水,就少了幾分靈氣雏吭;一個(gè)城市少了一座山峰锁施,就缺了幾分霸氣。 東莞是一個(gè)既有山也有水的城市杖们,山有黃旗山...
    醒者閱讀 508評(píng)論 0 0