Python装饰器的使用方法

装饰器的概念

Python的装饰器就是一个嵌套函数,它可以让其他函数在不需要做任何代码变动的状态下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有统一性需求的场景,比如:插入日志、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的相同性质代码多次利用。

装饰器的用法

代码如下:

# -*- coding:utf-8 -*-

__author__ = ‘Evan’

# 二层装饰器

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!’}

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月9日
下一篇 2022年9月9日

相关推荐