python 裝飾器的使用--逐步添加中

裝飾器是什么:
裝飾器的通用:
帶參數(shù)的裝飾器的使用:
裝飾器的使用范圍:
入門之前,先提幾個(gè)問題,然后依次回答這些問題。
答:
裝飾器本質(zhì)上是一個(gè) Python 函數(shù)或類,它可以讓其他函數(shù)或類在不需要做任何代碼修改的前提下增加額外功能,
裝飾器的返回值也是一個(gè)函數(shù)/類對(duì)象。
它經(jīng)常用于有切面需求的場景,比如:插入日志、性能測(cè)試、事務(wù)處理、緩存、權(quán)限校驗(yàn)等場景,裝飾器是解決這類問題的絕佳設(shè)計(jì)。
有了裝飾器,我們就可以抽離出大量與函數(shù)功能本身無關(guān)的雷同代碼到裝飾器中并繼續(xù)重用。
概括的講,裝飾器的作用就是為已經(jīng)存在的對(duì)象添加額外的功能,從而使代碼符合開放封閉原則。
裝飾器有兩種類型,一種裝飾器帶參數(shù)的,一種裝飾器不帶參數(shù)的。
裝飾器帶的應(yīng)用場景:
裝飾器主要可以用在緩存、日志、URL路由和權(quán)限校驗(yàn)等常見的功能
python中裝飾器的應(yīng)用場景使用demo

# _*_ coding:utf-8 _*_
# intend:簡單裝飾器的功能
# time:2017年11月28日10:20:28
# author:lucktime
## 通用裝飾器
def PrintData(func):
    def inner(*argvs,**kwargcs):
        print('printData ')
        x = func(*argvs,**kwargcs)
        return x
    return inner

## 帶參數(shù)的裝飾器
def Argv_Fun(argv):
    def PrintData(func):
        def inner(*argvs,**kwargcs):
            print('printData Argv_Fun')
            print(argv)
            x = func(*argvs,**kwargcs)
            return x
        return inner
    return PrintData
'''
test()
打印結(jié)果:
printData
printData Argv_Fun
hello Jack
==============print test
'''
@PrintData 
@Argv_Fun('hello Jack') 
def test():
    print('==============print test')


'''
test1(3)
打印結(jié)果:
printData Argv_Fun
hello Jack
printData
==============print test1 value 3
'''
@Argv_Fun('hello Jack') 
@PrintData
def test1(a):
    print('==============print test1 value %d'%a)

'''
print(test2())
打印結(jié)果:
printData
printData Argv_Fun
hello Jack
==============print test2
test2
'''
@PrintData
@Argv_Fun('hello Jack') 
def test2():
    print('==============print test2')
    return "test2"
'''
print(test4(2,5))   
printData
printData Argv_Fun
hello Jack
==============print test4 2 + 5 = 7
7
'''
@PrintData
@Argv_Fun('hello Jack') 
def test4(a,b):
    print('==============print test4 %d + %d = %d'%(a,b,(a+b)))
    return a+b

test()

test1(3)

print(test2())
print(test4(2,5))   
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容