Python装饰器的应用场景 Python装饰器的应用场景及实例用法
小妮浅浅 人气:0想了解Python装饰器的应用场景及实例用法的相关内容吗,小妮浅浅在本文为您仔细讲解Python装饰器的应用场景的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Python,装饰器,应用场景,下面大家一起来学习吧。
1、说明
装饰本质上是一个Python函数,它能使其他函数在没有任何代码变化的情况下增加额外的功能。有了装饰,我们可以抽出大量与函数功能无关的相同代码,继续重用。
2、应用场景
包括插入日志、性能测试、事务处理、缓存和权限验证。
3、实例
# 装饰器 # func指函数 def decorator(func): def wrapper(*args, **kwargs): # 执行函数内部逻辑 打印时间 print(time.time(), args, kwargs) # 执行调用函数中逻辑 打印不同参数 func(*args, **kwargs) return wrapper # 一个参数 @decorator def function(param): print('function : this is decorator ' + param) # 两个参数 @decorator def function1(param1, param2): print('function1 : this is decorator ' + param1) print('function1 : this is decorator ' + param2) # 三个参数(可变参数) @decorator def function2(param1, param2, **kwargs): print('function2 : this is decorator ' + param1) print('function2 : this is decorator ' + param2) print(kwargs) function('param') function1('param1' , 'param2') function2('param1' , 'param2', x=1,y=2,z=3)
内容扩展:
函数注册表
简单注册表
funcs = [] def register(func): funcs.append(func) return func @register def a(): return 3 @register def b(): return 5 # 访问结果 result = [func() for func in funcs]
注册表隔离(使用类的不同实例)
class Registry(object): def __init__(self): self._funcs = [] def register(self, func): self._funcs.append(func) def run_all(self): return [func() for func in self._funcs] r1 = Registry() r2 = Registry() @r1.register def a(): return 3 @r2.register def b(): return 5 @r1.register @r2.register
加载全部内容