调用包:
from functools import wraps
装饰器其实就是一个函数:参数是一个函数,返回值是一个函数
1. 装饰器使用是通过 @符号,在函数的上面
2. 装饰器中定义的函数,要使用 * args,**kwargs 两对兄弟组合,并且在这个函数中执行原始函数的
时候也要把 * args,**kwargs 传进去
3. 需要使用 functools.wraps 在装饰器的函数上,把传进来的函数进行包裹,这个不会丢失原始函数
的__name__等属性
def my_log(func):
@wraps(func)
def wrapper(*args,**kwargs):
print'hello world'
func(*args,**kwargs)
return wrapper
@my_log
def run():
print'run'
来源: http://www.bubuko.com/infodetail-2439640.html