0
点赞
收藏
分享

微信扫一扫

Python装饰器

两岁时就很帅 2022-02-14 阅读 66

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

引用规则

@装饰器方法名

实际应用

  • 以登录功能为例,执行fun1,fun2都需要校验用户是否登录。
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():
"""
登录成功后执行的操作
"""
pass
  • 以0-100求和计算为例,函数是否带参数,是否带返回值,代码写法有所区别。
"""
不带参数,不带返回值
"""

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()


举报

相关推荐

0 条评论