请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call'的日志
Topic source既支持 @log 又支持 @log('text') 是这么写吗?
import functools
def log(*args):
a0=None
if args==None :
pass
else:
a0=args[0]
#a1=args[1]
def decorator(fn):
@functools.wraps(fn)
def wrapper(*args2, **kw):
if a0==None:
print('函数名:%s\nlog' % (fn.__name__))
else:
print('函数名:%s\nlog参数:%s' % (fn.__name__,a0))
return fn(*args2, **kw)
return wrapper
return decorator
@log('这里是带参数的decorator对应的参数') #带参数的decorator
def f2():
print('f2程序执行成功')
f2()
@log('f33')
def f3():
print('f3程序执行成功')
f3()
既支持 @log 又支持 @log('text') ,这次好像对了 >_<
import functools
def log(*args):
a0=args
#print(a0)
def decorator(fn):
@functools.wraps(fn)
def wrapper(*args2, **kw):
if len(a0)==0:
print('函数名:%s\nlog' % (fn.__name__))
else:
print('函数名:%s\nlog参数:%s' % (fn.__name__,a0))
return fn(*args2, **kw)
return wrapper
return decorator
@log('这里是带参数的decorator对应的参数') #带参数的decorator
def f2():
print('f2程序执行成功')
f2()
@log()
def f3():
print('f3程序执行成功')
f3()
- 1
VincyChan4231
我这么写对不对?
import time, functools
def metric(fn):
@functools.wraps(fn)
def wrapper(*args,**kw):
print('begin call')
res=fn(*args,**kw)
print('end call')
return res
return wrapper