python设计模式之装饰器模式
来源:互联网 发布:易烊千玺同款衣服淘宝 编辑:程序博客网 时间:2024/05/21 03:54
装饰器模式
在python中装饰器已经算是代码级别的模式了,装饰器这个@符号会深入你我心,而这个技能也是写代码必备之大技.增加额外的功能,装饰器其实就是在你执行类或者函数之前给你封装了一层或者多层(多个装饰器,这在web框架代码中很常见)操作,z但是不影响你最后执行代码 其实原理就是:有一些函数或者类里面有一些步骤是一样的(比如对数据缓存,比如加锁和释放),那么你就可以把这些重复的东西拿出来放在装饰器里面,这样每个函数或者类就不需要写这样多的代码,而抽象出来。而通过这样的额外功能可以还能让你执行的函数或者类计数等
python的例子
一时间还想不起来干啥,好吧写了个缓存数据到redis的装饰器
from functools import wrapsfrom redis import Redisredis = Redis()def cached(timeout=5 * 60): def decorator(f): # wraps帮你将函数原来的属性复制过来 @wraps(f) def decorated_function(*args, **kwargs): # 以执行函数的参数为键 key = str(args) rv = redis.get(key) # 发现缓存过直接返回 if rv is not None: print 'Has match: ', rv return rv rv = f(*args, **kwargs) redis.setex(key, rv, time=timeout) return rv return decorated_function return decorator@cached()def printNumber(num): return numif __name__ == '__main__': # 注意列表数据有重复 for i in [1, 2, 5, 11, 2, 7, 9, 1]: print printNumber(i)
说到装饰器就要提一个模块: decorator 它是 Michele Simionato 为简化python的decorator的使用难度而开发的,强烈建议深入学习
0 0
- python设计模式之装饰器模式
- python设计模式之装饰器模式
- 8、python设计模式之装饰模式
- Python设计模式(八)【装饰器模式】
- Python设计模式-装饰器模式
- 设计模式之装饰器
- 设计模式之装饰器
- 设计模式之装饰器
- python之装饰器模式
- 【Python学习日记】【设计模式】装饰器(装饰模式)
- 设计模式之-Decorator--装饰器模式
- 设计模式之装饰器模式
- 设计模式之三:装饰器模式
- 设计模式之: Decorator(装饰器)模式
- Java设计模式之装饰器模式
- 设计模式之装饰器模式
- 设计模式之十三:装饰器模式
- 设计模式之装饰器模式
- 第四章 线程
- iOS界面调试工具 Reveal
- 安卓切换界面从顶部滑入,右侧滑入
- 【jsp】利用js 弹出div 锁定屏幕
- WXHL
- python设计模式之装饰器模式
- Android MMS模块数据存取
- HDOJ Can you solve this equation? 2199【二分查找】
- 自定义优站备份全攻略
- Android webview使用详解
- java内存分配和String类型的深度解析
- android编译openssl静态库.a
- hdu 5299(树上删边游戏) Circles Game
- python设计模式之命令调度模式