python學習筆記----裝飾器

裝飾器

 python裝飾器本質上就是一個函數碴巾,它可以讓其他函數在不需要做任代
 碼變動的前提下增加額外的功能,裝飾器的返回值也是一個函數對象(函數的指針)喻喳。

實質: 是一個函數
參數:是你要裝飾的函數名(并非函數調用)
返回:是裝飾完的函數名(也非函數調用)
作用:為已經存在的對象添加額外的功能
特點:不需要對對象做任何的代碼上的變動

裝飾器作用

裝飾器最大的作用就是對于我們已經寫好的程序,我們可以抽離出一些雷同的代碼組建多個特定功能的裝飾器啃炸,這樣我們就可以針對不同的需求去使用特定的裝飾器泰偿,這時因為源碼去除了大量泛化的內容而使得源碼具有更加清晰的邏輯俩垃。

函數的函數裝飾器

import time
def decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        func()
        end_time = time.time()
        print(end_time - start_time)

    return wrapper

@decorator 
def func():
    time.sleep(0.8)

func() # 函數調用
# 輸出:0.800644397735595

類方法的函數裝飾器

import time

def decorator(func):
    def wrapper(me_instance):
        start_time = time.time()
        func(me_instance)
        end_time = time.time()
        print(end_time - start_time)
    return wrapper

class Method(object):

    @decorator 
    def func(self):
        time.sleep(0.8)

p1 = Method()
p1.func() # 函數調用

通用裝飾器

def aa(fun):
    def inner(*args,**kwargs):
        print('啦啦')                
        return fun(*args,**kwargs)
    return inner

有參通用裝飾器

def w(a):
    def w1(fun):
        def inner(*args,**kwargs):
            if a == 1 :
                print('驗證1')
            elif a == 2:
                print('驗證2')
            return fun(*args,**kwargs)
       return inner
    retrn w1

@w(1)
def play (a,b):
    print('現在是下午%d點%d分'%(a,b))
play(3,30)

@w(2)
def play1():
    print('啦啦啦')
play1()

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市慷荔,隨后出現的幾起案子雕什,更是在濱河造成了極大的恐慌,老刑警劉巖拧廊,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件监徘,死亡現場離奇詭異,居然都是意外死亡吧碾,警方通過查閱死者的電腦和手機凰盔,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倦春,“玉大人户敬,你說我怎么就攤上這事≌霰荆” “怎么了尿庐?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呢堰。 經常有香客問我抄瑟,道長,這世上最難降的妖魔是什么枉疼? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任皮假,我火速辦了婚禮,結果婚禮上骂维,老公的妹妹穿的比我還像新娘惹资。我一直安慰自己,他們只是感情好航闺,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布褪测。 她就那樣靜靜地躺著猴誊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪侮措。 梳的紋絲不亂的頭發(fā)上懈叹,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音萝毛,去河邊找鬼项阴。 笑死,一個胖子當著我的面吹牛笆包,可吹牛的內容都是我干的。 我是一名探鬼主播略荡,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庵佣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了汛兜?” 一聲冷哼從身側響起巴粪,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粥谬,沒想到半個月后肛根,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡漏策,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年派哲,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掺喻。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芭届,死狀恐怖,靈堂內的尸體忽然破棺而出感耙,到底是詐尸還是另有隱情褂乍,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布即硼,位于F島的核電站逃片,受9級特大地震影響,放射性物質發(fā)生泄漏只酥。R本人自食惡果不足惜褥实,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望层皱。 院中可真熱鬧最爬,春花似錦勺阐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泌辫。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哩俭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工拳恋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凡资,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓谬运,卻偏偏與公主長得像隙赁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梆暖,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容

  • 給一個函數添加新功能 1. 裝飾器介紹 如上面代碼所示伞访,裝飾器是一個函數 可調用對象,接收一個函數作為參數,并將其...
    yhmyhmyhm閱讀 280評論 0 0
  • 大帥拳霸閱讀 404評論 0 0
  • 這算是我的第147篇文章轰驳。 已經好幾天斷斷續(xù)續(xù)沒有寫文章厚掷。很渴望,換了一個環(huán)境级解,或是在路上冒黑,所以沒有條件,今天算是...
    真真卒跡閱讀 282評論 1 2
  • 作為一個網癮少女勤哗,不得不說網絡世界是很迷人的抡爹,那些尋常視野里景色,通過移動設備的記錄帶了人的主觀色彩俺陋,每個人拍的照...
    第二個甜筒閱讀 1,645評論 17 55
  • 晚上去上課腊状,一節(jié)叫做大學生廉潔教育的公共課诱咏,恰逢老師點名,結果有一個班的班長學委團支書這些班干都沒來缴挖,老師很無奈袋狞。...
    紅吟兒閱讀 3,664評論 27 21