装饰器是一种特殊的函数,它输入一个函数输出一个函数,可用于给一个函数附加一些功能
定义一个打印函数名的装饰器
def print_name(func):
def funtion(*args,**kwargs):
print(func.__name__)
result = func(*args, **kwargs)
return result
return function
通过@ <装饰器标识符> 调用 装饰器标识符>
@print_name
def func():
pass
func()
在上面例子中, func函数本来是空的,现在它每次运行都会打印自身的函数名
一个函数可以有多个装饰器,优先级是离函数越近越先调用