一、装饰器
装饰器本质上是一个闭包函数,其作用在于可以为其他函数增加额外功能,装饰器的返回值是一个函数对象
二、定义一个装饰器
1.装饰器格式
代码如下(示例):
def 装饰器名(func):
def wrapper(*args, **kwargs):
#额外功能的代码
...
return func(*args, **kwargs)
return wrapper
2.装饰器示例
代码如下(示例):
def logger(func):
def wrapper(*args, **kwargs):
"""wrapper注释"""
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
print("函数名:{}".format(func.__name__))
print("函数注释内容:{}".format(func.__doc__))
print("入参 args :{}".format(args))
print("入参 kwargs :{}".format(kwargs))
print("返回值:{}".format(res))
print("函数执行耗时:{:.6f}".format(start_time - end_time))
return res
return wrapper
3.装饰器调用
代码如下(示例):
@logger
def test_one():
"我是第一个装饰器"
print("我调用了装饰器")
4.装饰器运行后输出
三、 总结
1、装饰器是一个闭包函数,包括内嵌函数,返回值是一个函数对象
2、需要装饰的函数前要加上调用格式:@装饰器名