装饰器的概念
Python的装饰器就是一个嵌套函数,它可以让其他函数在不需要做任何代码变动的状态下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有统一性需求的场景,比如:插入日志、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的相同性质代码多次利用。
装饰器的用法
代码如下:
# 二层装饰器
def decorator(func): # 执行函数
def wrapper(*args, **kwargs): # 函数的实参
result = dict()
result['from_func_parameter'] = [args or kwargs]
result['from_func_return_value'] = func(*args, **kwargs)
return result
return wrapper
# 三层装饰器
def full_decorator(value=None): # 装饰器的实参
def decorator(func): # 执行函数
def wrapper(*args, **kwargs): # 函数的实参
result = dict()
result['from_func_parameter'] = [args or kwargs]
result['from_func_return_value'] = func(*args, **kwargs)
result['from_decorator_parameter'] = value
return result
return wrapper
return decorator
@decorator
def example1(*args):
return 'hi {}'.format(args)
@full_decorator('Hello World!')
def example2(*args):
return 'hi {}'.format(args)
if __name__ == '__main__':
print('二层装饰器结果:')
print(example1('example1'))
print('三层装饰器结果:')
print(example2('example2'))
执行结果:
二层装饰器结果:
{'from_func_parameter': [('example1',)], 'from_func_return_value': "hi ('example1',)"}
三层装饰器结果:
{'from_func_parameter': [('example2',)], 'from_func_return_value': "hi ('example2',)", 'from_decorator_parameter': 'Hello World!'}
来源:CSDN
作者:皮皮鱼哟
链接:https://blog.csdn.net/weixin_43750377/article/details/103989015