装饰器是语言的一个很好的特性,相当于在不改变原有方法的基础上,去动态的修改方法新增一些功能等。类似于ios的category
不传入参数的 decorator的写法如下
importfunctools
def log(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print'call %s():'% func.__name__
returnfunc(*args, **kw)
returnwrapper
针对带参数的decorator:
importfunctools
def log(text):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kw):
print'%s %s():'% (text, func.__name__)
returnfunc(*args, **kw)
return wrapper
return decorator
链接:https://www.liaoxuefeng.com/wiki/897692888725344/923030163290656