上篇文章说过了装饰器的基本语法格式及多参数时的情况。
在实际的工作中,还会出现多个装饰器装饰一个函数的情况。
代码如下:
# 多个装饰器装饰一个函数
def set_fun1(func):
print("set_fun1已被定义") # 打印用于验证在多个装饰器的情况下,多个装饰器之间的执行顺序
def call_fun1(*args, **kwargs):
print("call_fun1执行了") # 当被装饰函数执行时,会打印
return func()
return call_fun1
def set_fun2(func):
print("set_fun2已被定义")
def call_fun2(*args, **kwargs):
print("call_fun2执行了")
return func()
return call_fun2
# 装饰函数
@set_fun2
@set_fun1
def test():
print("******如果你看出这是样样老师的装饰器样本,恭喜你找到组织了******")
test()
将上述代码运行之后,会有如下结果:
set_fun1已被定义
set_fun2已被定义
call_fun2执行