python设计模式之装饰器模式
2015-07-29 18:22
561 查看
装饰器模式
在python中装饰器已经算是代码级别的模式了,装饰器这个@符号会深入你我心,而这个技能也是写代码必备之大技.增加额外的功能,装饰器其实就是在你执行类或者函数之前给你封装了一层或者多层(多个装饰器,这在web框架代码中很常见)操作,z但是不影响你最后执行代码 其实原理就是:有一些函数或者类里面有一些步骤是一样的(比如对数据缓存,比如加锁和释放),那么你就可以把这些重复的东西拿出来放在装饰器里面,这样每个函数或者类就不需要写这样多的代码,而抽象出来。而通过这样的额外功能可以还能让你执行的函数或者类计数等python的例子
一时间还想不起来干啥,好吧写了个缓存数据到redis的装饰器from functools import wraps from redis import Redis redis = 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 num if __name__ == '__main__': # 注意列表数据有重复 for i in [1, 2, 5, 11, 2, 7, 9, 1]: print printNumber(i)
说到装饰器就要提一个模块: decorator 它是 Michele Simionato 为简化python的decorator的使用难度而开发的,强烈建议深入学习
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- PropertyChangeListener简单理解
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 设计模式之创建型模式
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定