Python中的装饰器详解
2016-09-20 17:04
453 查看
一:什么是装饰器
装饰器是一个函数,其主要用途是包装一个函数或类。这种包装的目的主要是透明地修改或增强被包装对象的行为,表示装饰器语法的特殊符号是@,如下所示:@decorate def square(x): return x*x
二:装饰器有什么用
1.如果在一个函数有装饰器来修饰,当要执行该函数时,转到执行装饰器函数,就可以实现在欲执行的函数前后添加相应的功能。装饰器可以传参数,注意参数位置。
所以装饰器简单来说,就是用来在函数的执行前后执行任意函数。
比如下例:
def decorate(fun): def wrapper(arg): //注意要参数在此处需要加上 print 'header' fun(arg) return wrapper @decorate def fun1(arg): print 'fun1', arg @decorate def fun2(arg): print 'fun2', arg @decorate def fun3(arg): print 'fun3', arg ret = fun1(1) fun2(2) fun3(3)
运行结果为:
那么如果有返回值呢,函数可以有返回值,装饰器中需要接收并返回,这样不影响函数实现自己本来的返回功能。
如下:
def decorate(fun): def wrapper(arg): print 'header' result = fun(arg) return result return wrapper @decorate def fun1(arg): print 'fun1', arg return 'return' @decorate def fun2(arg): print 'fun2', arg return 'return' @decorate def fun3(arg): print 'fun3', arg return 'return' ret = fun1(1) print ret fun2(2) fun3(3)
输出如图:
2.如果在一个类中使用装饰器,比如我们可以使用@staticmethod来设置一个函数为静态方法,那么就可以通过类无需实例直接调用该方法。
class MyClass:
@staticmethod //如果不加,则会报错,不加的情况想要调用该函数必须先实例化类。
def fun(arg):
print arg
MyClass.fun('class')
相关文章推荐
- Python学习笔记 装饰器详解
- Python中的各种装饰器详解
- (进阶)详解 Python 的装饰器
- 详解Python的装饰器
- 详解Python中最难理解的点-装饰器
- Python中的装饰器用法详解
- 详解Python的装饰器
- 详解Python的装饰器
- Python 装饰器详解
- Python的装饰器使用详解
- python中的装饰器详解
- Python装饰器基础详解
- Python 3 之 装饰器详解
- 【转】详解Python的装饰器
- python中函数总结之装饰器闭包详解
- 详解Python中的装饰器、闭包和functools的教程
- python之装饰器详解
- Python全栈开发之8、装饰器详解
- 详解Python的装饰器
- Python中装饰器兼容加括号和不加括号的写法详解