import functools
def log(text=''): def deco(fn): @functools.wraps(fn) def wrapper(args,**kw): if(text!=''): print('%s %s %s():' % (text,'begin call',fn.name)) else: print('%s %s():' % ('begin call',fn.name)) return fn(args,**kw) return wrapper return deco
@log()
def f(): print('end call')
f()
@log('execute')
def g(): print('end call')
g()
不对,题目里面是没要log后面的括号
分情况,把需要参数的代码和不需要参数的代码都写一遍,if判断执行哪一个代码
Sign in to make a reply
落汐21
import functools
def log(text=''): def deco(fn): @functools.wraps(fn) def wrapper(args,**kw): if(text!=''): print('%s %s %s():' % (text,'begin call',fn.name)) else: print('%s %s():' % ('begin call',fn.name)) return fn(args,**kw) return wrapper return deco
@log()
def f(): print('end call')
f()
@log('execute')
def g(): print('end call')
g()