Python基础-day13-装饰器2

"""
通过开关来控制是否使用装饰器
FLAG = True
FLAG = False
"""
import time


FLAG = True


def timer_out(flag):
    def timer(func):
        def inner(*args, **kwargs):
            if flag:
                start = time.time()
                ret = func(*args, **kwargs)
                end = time.time()
                print(end - start)
                return ret
            else:
                ret = func(*args, **kwargs)
                return ret
        return inner
    return timer


@timer_out(FLAG)
def wahaha():
    time.sleep(5)
    print('wahaha')


wahaha()
"""
多个装饰器装饰同一个函数
"""


def wrapper1(func):
    def inner1(*args, **kwargs):
        print('wrapper1, before func')
        func(*args, **kwargs)
        print('wrapper1, after func')
    return inner1


def wrapper2(func):
    def inner2(*args, **kwargs):
        print('wrapper2, before func')
        func(*args, **kwargs)
        print('wrapper2, after func')
    return inner2


def wrapper3(func):
    def inner3(*args, **kwargs):
        print('wrapper3, before func')
        func(*args, **kwargs)
        print('wrapper3, after func')
    return inner3


@wrapper3
@wrapper2
@wrapper1
def fun():
    print('in f')


fun()

这是打印规则:

最外层的装饰器打印在最外层。

posted @ 2019-11-01 21:28  道霖  阅读(85)  评论(0)    收藏  举报