普通装饰器
def outer(fn):
def inner(name):
print("大家好!!!!")
fn(name)
print("谢谢大家!!!")
return inner
# 使用注释来表示该函数被outer装饰
@outer
def say(name):
print("我是", name)
print("我喜欢跳广场舞")
say("帅锅")
通用装饰器
# 和普通装饰器的区别在于
# 通用装饰器可以用来装饰任何函数,参数没有固定
def outer(fn):
def inner(*args,**kwargs):
print("这是通用装饰器!!!")
#此处必须使用*args,**kwargs,如果直接输出args会输出一个元组,加上*号
#后等于是将元组散开变成一个个的参数然后传递给下面需要被装饰的函数func(a,b,c)
fn(*args,**kwargs)
print("装饰结束!!!")
return inner
@outer
def func(a,b,c):
print("a=",a,"b=",b,"c=",c)
func(1,2,3)
#输出为
#这是通用装饰器!!!
#a=1 b=2 c=3
#装饰结束!!!