装饰器的作用
在不修改原函数及其调用方式的情况下对原函数进行扩展
装饰器的创建
def decorator(func):
def inner(*args,**kwargs):
''' 执行函数之前要做的 '''
res = func(*args,**kwargs)
''' 执行函数之后要做的 '''
return res
return inner
''' 在使用装饰器后,在装饰器里访问函数的元数据时,看到的是装饰器函数的元数据;functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象'''
from functools import wraps
def decorator(func):
@warps(func)
def wrapper(*args,**kwargs):
''' 执行函数之前要做的 '''
res = func(*args,**kwargs)
''' 执行函数之后要做的 '''
return res
return wrapper