#打印函数执行时间
def metric2(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
t0=time.time()
res=fn(*args, **kw)
t1=time.time()
print('%s executed in %s ms' % (fn.__name__,t1-t0))
return res
return wrapper
#既支持@log,又支持@log('text')
import time, functools
def log(*args):
a0=args[0]
a1=args[1]
def decorator(fn):
def wrapper(*args2, **kw):
print('函数名:%s\nlog参数:%s' % (fn.__name__,a0+' 后面是 '+a1))
return fn(*args2, **kw)
return decorator
@log('这里是带参数的decorator对应的参数','第二个参数') #带参数的decorator
def f2():
print('程序执行成功')
f2()
#在程序调用前打印begin call,调用后打印end call
import functools
def log1(fn):
def end(func):
print('end call function: %s' % fn.__name__)
print('begin call function: %s' % fn.__name__)
return end(fn(*args, **kw))
@log1
def f3():
f3()
Sign in to make a reply
豆糕啊
#打印函数执行时间
def metric2(fn):
@functools.wraps(fn)
def wrapper(*args, **kw):
t0=time.time()
res=fn(*args, **kw)
t1=time.time()
print('%s executed in %s ms' % (fn.__name__,t1-t0))
return res
return wrapper
#既支持@log,又支持@log('text')
import time, functools
def log(*args):
a0=args[0]
a1=args[1]
def decorator(fn):
@functools.wraps(fn)
def wrapper(*args2, **kw):
print('函数名:%s\nlog参数:%s' % (fn.__name__,a0+' 后面是 '+a1))
return fn(*args2, **kw)
return wrapper
return decorator
@log('这里是带参数的decorator对应的参数','第二个参数') #带参数的decorator
def f2():
print('程序执行成功')
f2()
#在程序调用前打印begin call,调用后打印end call
import functools
def log1(fn):
@functools.wraps(fn)
def end(func):
print('end call function: %s' % fn.__name__)
def wrapper(*args, **kw):
print('begin call function: %s' % fn.__name__)
return end(fn(*args, **kw))
return wrapper
@log1
def f3():
print('程序执行成功')
f3()