python装饰器
来源:互联网 发布:淘宝达人怎么加粉丝 编辑:程序博客网 时间:2024/03/29 13:50
转载:http://bu-choreography.iteye.com/blog/1236881
python中最不想python风格的就是装饰器了,特别是‘@’很令新来python的人费解,不过装饰器可是很强大的功能。
装饰器语法有两种,类风格和函数风格
类风格例子:
输出结果是
类装饰的设计需要连个方法,包含参数为装饰函数的初始化函数和代替执行函数的__call__函数,当该python文件被编译时,先执行初始化方法,当被装饰的函数被执行的时候执行__call__方法中的内容,自己本身的执行内容也被__call__方法替代,因此把装饰函数提前在初始化方法中为__call__准备好使用。
函数风格代码比较简单:
结果同上,其中的new_f是python语法中的闭包,打印函数名称时打印了'new_f',如果想打印当前调用的函数,则可修改为
装饰器语法有两种,类风格和函数风格
类风格例子:
- class entryExit(object):
- def __init__(self, f):
- self.f = f
- def __call__(self):
- print "Entering", self.f.__name__
- self.f()
- print "Exited", self.f.__name__
- @entryExit
- def func1():
- print "inside func1()"
- @entryExit
- def func2():
- print "inside func2()"
- func1()
- func2()
输出结果是
- Entering func1
- inside func1()
- Exited func1
- Entering func2
- inside func2()
- Exited func2
类装饰的设计需要连个方法,包含参数为装饰函数的初始化函数和代替执行函数的__call__函数,当该python文件被编译时,先执行初始化方法,当被装饰的函数被执行的时候执行__call__方法中的内容,自己本身的执行内容也被__call__方法替代,因此把装饰函数提前在初始化方法中为__call__准备好使用。
函数风格代码比较简单:
- def entryExit(f):
- def new_f():
- print "Entering", f.__name__
- f()
- print "Exited", f.__name__
- return new_f
- @entryExit
- def func1():
- print "inside func1()"
- @entryExit
- def func2():
- print "inside func2()"
- func1()
- func2()
- print func1.__name__
结果同上,其中的new_f是python语法中的闭包,打印函数名称时打印了'new_f',如果想打印当前调用的函数,则可修改为
- def entryExit(f):
- def new_f():
- print "Entering", f.__name__
- f()
- print "Exited", f.__name__
- new_f.__name__ = f.__name__
- return new_f
- python装饰器装饰类
- [python]python装饰器
- Python装饰器学习
- Python装饰器
- python 装饰器
- Python装饰器
- python 装饰器 应用
- python 装饰器2
- Python装饰器学习
- python装饰器
- python装饰器
- python 装饰器入门
- python装饰器
- python装饰器
- python 装饰器'@'
- python装饰器
- Python装饰器详解
- python 装饰器
- 话说程序员的职业生(IBM软件集团大中华区总架构师 寇卫东)
- 分手快乐,祝你快乐,你找不到比我更好的。
- oracle sql developer 如何支持多个窗体,打开多张表,多个tab,同时查看多个数据表
- windows系统文件快速查询(全)
- C&C++之标准库
- python装饰器
- Android地图开发之Overlay应用(高德)
- C++ 虚析构函数
- 控件为何不能自动装载?--全面总结
- MS SQL Server收缩日志文件
- C++之命名空间
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
- eventfd函数详解
- 流年的最新伤感日志:年轻的时候,会轻狂