多个装饰器,执行顺序,以及自己编写响应以及请求

1.背景

背景:我为啥单独写一片这个文章呢?是因为遇到好多次了
我必须搞懂它!
文章分三部分
1.1不带参数的多个装饰器
1.2带参数的装饰器
1.3带参数的实例,直接拿来用

2不带参数的多个装饰器‘

# 编写装饰器,作为响应以及请求的校验

def request_wrapper(fun):
    print(f"request_wrapper  1")

    def wrapper(*args, **kwargs):
        print(f"request_wrapper  2")
        fun(*args, **kwargs)
        print(f"request_wrapper  3")

    return wrapper


def response_wrapper(fun):
    print(f"response_wrapper  1")

    def wrapper(*args, **kwargs):
        print(f"response_wrapper  2")
        fun(*args, **kwargs)
        print(f"response_wrapper  3")

    return wrapper

@request_wrapper
@response_wrapper
def fun():
    print(f"我是主程序")


if __name__ == '__main__':
    fun()
View Code

 

 

 3.带参数的多个装饰器

# 编写装饰器,作为响应以及请求的校验

def request_wrapper(xxxxxxxxxxxx):
    print(f"request_wrapper  1")

    def wrapper(fun):
        print(f"request_wrapper  2")
        def inner(*args, **kwargs):
            print(f"request_wrapper  3")
            fun(*args, **kwargs)
            print(f"request_wrapper  4")
        return inner

    print(f"request_wrapper  5")
    return wrapper


def response_wrapper(xxxxxxxxxxxx):
    print(f"response_wrapper  1")

    def wrapper(fun):
        print(f"response_wrapper  2")
        def inner(*args, **kwargs):
            print(f"response_wrapper  3")
            fun(*args, **kwargs)
            print(f"response_wrapper  4")
        return inner

    print(f"response_wrapper  5")
    return wrapper

@request_wrapper(111111)
@response_wrapper(111111)
def fun():
    print(f"我是主程序")


if __name__ == '__main__':
    fun()
View Code

 

 4直接拿去用 待完成未完成 #todo

# 编写装饰器,作为响应以及请求的校验

def request_wrapper(xxxxxxxxxxxx):
    print(f"request_wrapper  1") 

    def wrapper(fun):
        print(f"request_wrapper  6")
        def inner(*args, **kwargs):
            print(f"request_wrapper  7")
            fun(*args, **kwargs)
            print(f"request_wrapper  10")
        return inner

    print(f"request_wrapper  2")# 2
    return wrapper


def response_wrapper(xxxxxxxxxxxx):
    print(f"response_wrapper  3")

    def wrapper(fun):
        print(f"response_wrapper  5")
        def inner(*args, **kwargs):
            print(f"response_wrapper  8")
            fun(*args, **kwargs)
            print(f"response_wrapper  9")
        return inner

    print(f"response_wrapper  4")
    return wrapper

@request_wrapper(111111)
@response_wrapper(111111)
def fun():
    print(f"我是主程序")


if __name__ == '__main__':
    fun()
View Code

 

 

 

 

20:40:42
posted @ 2022-08-15 20:22    阅读(14)  评论(0编辑  收藏  举报