39、装饰器装饰多个函数

一.装饰器装饰多个函数

我们现在知道标准装饰器和带参数的装饰器,我们来看看多个装饰器装饰一个函数:

def wrapper1(func):
    def inner1(*args,**kwargs):
        print("这是装饰器一开始")
        func(*args,**kwargs)
        print("这是装饰器一结束")
    return inner1

def wrapper2(func):  
    def inner2(*args,**kwargs):
        print("这是装饰器二开始")
        func(*args,**kwargs)
        print("这是装饰器二结束")
    return inner2


@wrapper1  
@wrapper2  
def func():
    print("这是被装饰的函数")

func()

大家来推断一下,这个的打印结果

这是装饰器一开始
这是装饰器二开始
这是被装饰的函数
这是装饰器二结束
这是装饰器一结束

这个结果和我们想象的是不是不一样啊,这是为什么呢?

Python规定多个装饰器装饰一个函数的时候先执行离被装饰的函数最近的装饰器

猜你喜欢

转载自blog.csdn.net/Mrrunsen/article/details/120500627
今日推荐