Python-裝飾器

def func1(age):
    print ("%d"%(age))
    
//如果直接打印-10是沒有問題,但是年齡不肯為負數(shù)
//而且我也不想修改原有的方法就可以弄一個裝飾器

func1(-10)


//裝飾器:把func1整個包裝一層

def outer(func):
    def inner(age):
        if age < 0:
            age = 0
        func(age)
    return inner

//func2 就是func1包裝后的新方法
func2 = outer(func1)

//然后再次傳入-10
func2(-10)

打印結(jié)果:
第一次沒有包裝過的打印是-10
第二次包裝過打印 0;


以上方法可以進行優(yōu)化:

利用“@” 如下 在func1上加一個@ outer

def outer(func):
   def inner(age):
       if age < 0:
           age = 0
       func(age)
   return inner


@outer
def func1(age):
   print ("%d"%(age))

func1(-10)

萬能裝飾器:


def outer(func):
    def inner(*args,**kwargs):
    # 可以在這里添加修改功能
        func(*args,**kwargs)
    return inner


@outer
def func1(age,sex):
    print ("%d %s"%(age,sex))

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

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

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