1

def outer(func):
    def inner():
        print('456')
        ret = func()
        print('789')
        return ret

    return inner


@outer
def inder():
    print('123')


inder()
#装饰器带参数
def
outer(func): def inner(a1,a2): print('456') ret = func(a1,a2) print('789') print(ret) return ret return inner @outer def inder(a1,a2): print('123') return a1+a2 inder(4,4)

 

带N个参数的装饰器
def
outer(func): def inner(*arg,**kwargs): print('456') ret = func(*arg,**kwargs) print('789') print(ret) return ret return inner @outer def inder(a1,a2,a3): print('123') return a1+a2+a3 inder(4,4,6)

 

#多个装饰器装饰同一个函数
def
oueter2(func): def innet(*arg,**kwargs): print('3.5') ret=func(*arg,**kwargs) return ret return innet def outer(func): def inner(*arg,**kwargs): print('456') ret = func(*arg,**kwargs) print('789') print(ret) return ret return inner @oueter2 @outer def inder(a1,a2,a3): print('123') return a1+a2+a3 inder(4,4,6)

 

posted on 2018-02-09 16:28  1945775622  阅读(87)  评论(0)    收藏  举报