python decorator的理解
2016-08-16 08:25
375 查看
一、decorator的作用
装饰器本质上是一个Python函数,可以让其他函数在不做任何代码变动的前提下增加额外功能。
装饰器的返回值也是一个函数对象。python里函数也是对象。
它经常用于有切面需求(什么是切面需求?)的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。
装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
二、简单的装饰器
之前一篇很潦草的python中的@
三、带参数的装饰器
四、如何写出好的装饰器
------------
source:【1】如何理解python的装饰器
【2】Python里为什么函数可以返回一个函数内部定义的函数?
装饰器本质上是一个Python函数,可以让其他函数在不做任何代码变动的前提下增加额外功能。
装饰器的返回值也是一个函数对象。python里函数也是对象。
它经常用于有切面需求(什么是切面需求?)的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。
装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
二、简单的装饰器
之前一篇很潦草的
defuse_logging(func): print"%sisrunning"%func.__name__ returnfunc() @use_logging deffun_a(): print"hello,I'mfunc_a." fun_a#带括号()报错fun_a()TypeError:'NoneType'objectisnotcallable
----------- fun_aisrunning#先执行use_logging hello,I'mfunc_a.
defuse_logging(func):
defwrapper(*args,**kwargs):
print"%sisrunning"%func.__name__
returnfunc()
returnwrapper
@use_logging
deffun_a():
print"hello,I'mfunc_a."
fun_a()
-------
fun_aisrunning
hello,I'mfunc_a.
三、带参数的装饰器
四、如何写出好的装饰器
------------
source:【1】
【2】
相关文章推荐
- python self,cls,decorator的理解
- python之decorator理解
- 对于python中的self,cls,decorator的理解
- 深入理解Python 装饰器(decorator)
- 装饰器学习(2)------深入理解Python 装饰器(decorator)
- 对于python中的self,cls,decorator的理解
- 深入理解Python 装饰器(decorator)
- 对Python中装饰器(Decorator)的理解与进阶
- python self,cls,decorator的理解
- 对于python中的self,cls,decorator的理解
- [Python]五分钟理解元类(Metaclasses)
- 理解Python命名机制
- [Python]五分钟理解元类(Metaclasses)
- [python-chinese] 我对字符编码的一些理解
- python的装饰器decorator
- Python天天美味(25) - 深入理解yield
- Python Decorators(二):Decorator参数
- [Python]五分钟理解元类(Metaclasses)
- 理解 python 的 method 和 function 兼谈 descriptor
- 理解python中的bytestring和unicode