python基础-装饰器
定义:
不改变原函数的代码增添新功能
闭包实现装饰器
def log_time(func):
def inner(*args, **kwargs):
beg = time.time()
ret = func(*args, **kwargs)
end = time.time()
print("总耗时:%d", end - beg)
return ret
return inner
@log # 把@log放到f()函数的定义处,相当于执行了语句:log = log(f)
def f():
pass
装饰器传参
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
return wrapper
return decorator
@log('execute') # 相当于执行 now = log('execute')(now)
def now():
print('2015-3-25')
类实现装饰器
要实现init和call方法