个人理解的装饰器即将函数作为参数进行调用,适用于多个函数执行所要调用的公共代码,类似于 unittest 中的 setup 或者 teardown。

引用规则
@ 装饰器方法名

实际应用

def is_login(func):
    def decorate():
        url = ""  # 登录接口地址
        header = {}  # 登录接口请求体
        body = {}  # 登录接口请求体
        response = requests.post(url=url,data=body,headers=header)
        if response.status_code == 200:
            print("登录成功")
            func()
        else:
            print("登录失败,请重试")
    return decorate


@is_login   # 调用装饰器
def fun1():
    """
    登录成功后执行的操作
    """
    pass


@is_login  # 调用装饰器
def fun2():
    """
    登录成功后执行的操作
    """

"""
不带参数,不带返回值
"""

def cal_sum_01(func):
    def wrapper():
        func()
    return wrapper


@cal_sum_01
def data_sum_01():
   print(sum(range(1,100)))



"""
带参数,不带返回值
"""
def cal_sum_02(func):
    def wrapper(number):
        func(number)
    return wrapper


@cal_sum_02
def data_sum_02(number):
   print(sum(range(1,number)))


"""
不带参数,带返回值
"""
def cal_sum_03(func):
    def wrapper():
        result = func()
        print(result)
    return wrapper


@cal_sum_03
def data_sum_03():
    return sum(range(1,100))

# 调用函数  
data_sum_01()
data_sum_02(100)
data_sum_03()


↙↙↙阅读原文可查看相关链接,并与作者交流