看了其他同学的代码,才恍然大悟,
1.判断传入的是函数还是普通参数
2.若是普通参数,需要定义3层函数;若是函数,则只需要2层
def log(text):
if isinstance(text,str):#判断是否带有参数
def decorator(func):
@fs.wraps(func)
def wrapper(*args):
print(text,func.__name__)
return func(*args)
return wrapper
return decorator
else:#没有传入参数时,text为func,只有两层,不需要装饰函数
@fs.wraps(text)
print('call',text.__name__)
return text(*args)
@log
def calc_sum(*args):
s=0
for n in args:
s=s+n
return s
calc_sum(10,2,300)
Sign in to make a reply
黄艳fly
看了其他同学的代码,才恍然大悟,
1.判断传入的是函数还是普通参数
2.若是普通参数,需要定义3层函数;若是函数,则只需要2层
def log(text):
if isinstance(text,str):#判断是否带有参数
def decorator(func):
@fs.wraps(func)
def wrapper(*args):
print(text,func.__name__)
return func(*args)
return wrapper
return decorator
else:#没有传入参数时,text为func,只有两层,不需要装饰函数
@fs.wraps(text)
def wrapper(*args):
print('call',text.__name__)
return text(*args)
return wrapper
@log
def calc_sum(*args):
s=0
for n in args:
s=s+n
return s
calc_sum(10,2,300)