您的位置:首页 > 编程语言 > Python开发

python decorator的理解

2016-08-16 08:25 375 查看
一、decorator的作用

  装饰器本质上是一个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】如何理解python的装饰器

     【2】Python里为什么函数可以返回一个函数内部定义的函数?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: