个人理解的装饰器即将函数作为参数进行调用,适用于多个函数执行所要调用的公共代码,类似于 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()