通用装饰器
# 对fn函数做装饰,返回一个新函数
def logging(fn):
def inner(*args, **kwargs):
print("我是日志")
# 执行源函数
result = fn(*args, **kwargs)
# 返回结果
return result
# 返回一个新函数,函数的参数要与原函数一致
return inner
多个装饰器
def mylog2(f):
def inner(*args, **kwargs):
str = f(*args, **kwargs)
ret = f"begin1 {str} end"
return ret
return inner
def mylog(f):
def inner(*args, **kwargs):
print(args)
if args[0] == 2:
return f"arg 不合法"
ret = f(*args, **kwargs)
return f" 我是内层日志begin {ret} 我是内层日志end "
return inner
@mylog2
@mylog
def add(a,b,c=20,d=50):
print(a+b)
return a+b