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

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

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

image.png

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

image.png

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

相关文章
多个装饰器,执行顺序,以及自己编写响应以及请求
多个装饰器,执行顺序,以及自己编写响应以及请求
|
22天前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
3月前
|
JSON 前端开发 Java
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
79 6
|
4月前
|
前端开发
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
|
存储 小程序 前端开发
小程序封装网络请求和拦截器
在开发小程序时,实际上我们通常需要封装网络请求和拦截器,以实现统一处理状态码和存储用户登录信息等功能。这样可以提高开发效率,减少代码重复,同时也可以提高代码的可维护性和可读性。
211 0
|
4月前
|
缓存 小程序 前端开发
如何解决小程序异步请求问题
如何解决小程序异步请求问题
172 0
|
JSON 前端开发 数据格式
前端对接口参数错误如何解决
前端对接口参数错误如何解决
79 0
|
JSON 前端开发 数据格式
前端对接口参数错误如何解决
前端对接口参数错误如何解决
111 0
|
测试技术 数据处理 数据安全/隐私保护
接口自动化测试中一些复杂请求的处理方式
接口自动化用例编写中,遇到复杂的请求数据,该如何处理?