简介
Python中的装饰器,主要是在不改变原有函数的情况下增强这个函数的功能,本质就是一个返回函数的高阶函数
简单装饰器
定义
def log(func):
@functools.wraps(func) # 相当于wrapper.__name__ = func.__name__
def wrapper(*args, **kw):
print('start call %s' % func.__name__)
return func(*args, **kw)
return wrapper
使用
>>>@log # 相当于执行语句:func1 = log(func1)
...def func1():
... print("func1")
>>>
>>>func1()
start call func1
func1
>>>
带参数的装饰器
定义
def log(level):
def decorator(func):
@functools.wraps(func) # 相当于wrapper.__name__ = func.__name__
def wrapper(*args, **kwargs):
print('%s: start call %s' % (level, func.__name__))
return func(*args, **kwargs)
return wrapper
return decorator
使用
@log('DEBUG') # 相当于执行语句:func1 = log('DEBUG')(func1)
def func1():
print("func1")
func1()
DEBUG: start call func1
func1
后续再补充,类里面的装饰器用法
未完,待续…