Python装饰器的应用场景及实例用法
装饰本质上是一个Python函数,它能使其他函数在没有任何代码变化的情况下增加额外的功能。有了装饰,我们可以抽出大量与函数功能无关的相同代码,继续重用。
2、应用场景包括插入日志、性能测试、事务处理、缓存和权限验证。
3、实例# 装饰器# func指函数def decorator(func): def wrapper(*args, **kwargs):# 执行函数内部逻辑 打印时间print(time.time(), args, kwargs)# 执行调用函数中逻辑 打印不同参数func(*args, **kwargs) return wrapper# 一个参数@decoratordef function(param): print(’function : this is decorator ’ + param)# 两个参数@decoratordef function1(param1, param2): print(’function1 : this is decorator ’ + param1) print(’function1 : this is decorator ’ + param2)# 三个参数(可变参数)@decoratordef 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 @registerdef a(): return 3 @registerdef 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.registerdef a(): return 3 @r2.registerdef b(): return 5 @r1.register@r2.register
到此这篇关于Python装饰器的应用场景及实例用法的文章就介绍到这了,更多相关Python装饰器的应用场景内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)2. 关于HTML5的img标签3. java实现图形化界面计算器4. 《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析5. IntelliJ IDEA设置条件断点的方法步骤6. ASP.NET MVC获取多级类别组合下的产品7. ASP.NET MVC解决上传图片脏数据的方法8. 5个HTML5的常用本地存储方式详解与介绍9. ASP基础入门第七篇(ASP内建对象Response)10. 原生js XMLhttprequest请求onreadystatechange执行两次的解决
