Python编程学习——装饰器
来源:互联网 发布:淘宝网怎么注册用户 编辑:程序博客网 时间:2024/05/16 06:22
简介:
装饰器,Python2.4版本引入的一种新特性。跟名字一样,是用来装饰的。其实装饰器就是一个函数,不过形式比较特殊,一般用”@”开头,一般形式如下:
@decodef foo(): pass
上面的代码等同于下面这句代码:
foo = deco(foo)
装饰器既可以和上面一样没有参数,也可以是带参数的:
@decomaker(deco_args)def foo(): pass
等价于:
foo = decomaker(deco_args)(foo)
代码举例:
from time import ctime, sleepdef log(func): def wrappedFunc(): print '[%s] %s() called' % (ctime(), func.__name__) return func() return wrappedFunc@logdef foo(): passfor i in xrange(5): sleep(1); foo()
运行结果:
[Mon Sep 21 21:43:12 2015] foo() called[Mon Sep 21 21:43:13 2015] foo() called[Mon Sep 21 21:43:14 2015] foo() called[Mon Sep 21 21:43:15 2015] foo() called[Mon Sep 21 21:43:16 2015] foo() called
代码中使用内嵌包装函数,保证每次调用函数装饰器都会工作。在使用装饰器的时候注意返回值,需要与原函数一致。
带参数的装饰器:
from time import ctime, sleepdef log(arg): print "I'm function %s" % arg def deco(func): def wrappedFunc(): print '[%s] %s() called' % (ctime(), func.__name__) return func() return wrappedFunc return deco@logdef foo(): passfor i in xrange(5): sleep(1); foo()
运行结果:
I'm function foo[Mon Sep 21 22:28:19 2015] foo() called[Mon Sep 21 22:28:20 2015] foo() called[Mon Sep 21 22:28:21 2015] foo() called[Mon Sep 21 22:28:22 2015] foo() called[Mon Sep 21 22:28:23 2015] foo() called
参考资料:
装饰器—廖雪峰的官方网站
Python核心编程(第二版)
What’s New in Python 2.4 文档
0 0
- Python编程学习——装饰器
- python高级编程-装饰器学习笔记
- python学习——装饰器
- Python 学习笔记 ——装饰器
- Python学习笔记——装饰器
- python 装饰器编程
- python 装饰器编程
- python—装饰器
- python—装饰器
- python 学习笔记——python 装饰器(一)
- python 学习笔记——python 装饰器(二)
- Python高级编程——7.装饰器
- Python装饰器学习
- Python装饰器学习
- Python装饰器学习
- Python装饰器学习
- python 装饰器学习
- Python装饰器学习
- Effective C++——条款46(第7章)
- hdu 5452 Minimum Cut 求最小割边集的大小
- 日志-eye track
- HTML(网页设计)基础到加强
- 二叉树遍历(前序、中序、后序)递归与非递归
- Python编程学习——装饰器
- 正则表达式:
- 基于HSI颜色模型实现去除照片的“红眼现象”
- 散列表链接法用双向链表的原因
- 转圈打印二维数组
- 操作系统常见面试题
- C语言 输入日期判断一年中的第几天
- 解决字段名与实体类属性名不相同的冲突
- JavaSE基础 Item -- 抽象类Abstract