python装饰器菜鸟教程,python装饰器--原来如此简单
Python decorator是一种用来扩展原函数的函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的函数。饰品本质上是一个闭包,闭包是饰品的核心。
定义
(推荐教程:python教程)
Python decorators是一种用来扩展原函数的函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的函数。
这个函数的特别之处在于,它的返回值也是一个函数,是一个嵌入了“原”函数的函数。
详细注释
装饰器实际上是一个闭包,它将一个函数作为参数,并返回一个备选函数。闭包是装饰器的核心。
解释简单闭包的特征:
函数返回的函数对象依赖于非函数执行时内部的变量值。此时,该函数返回的实际内容如下:
1.函数对象;
2.函数对象需要使用的外部变量和变量值;
以上是结束语。闭包必须嵌套在函数中,并且必须返回调用外部变量的函数对象。
示例:
#编码=utf-8
导入时间
立即定义():
“打印”当前时间是% S“% time . strftime”(% Y-% M-% d % H-% M-% S)
res=现在
Res()结果:
现在,如果我们想在Now()函数中添加一些其他的函数,比如在调用函数前后自动打印一些日志,但是又不想修改now()的原始定义,那么我们的decorator就派上用场了。
本质上,装饰器是返回函数的高阶函数。所以我们需要定义一个可以打印日志的装饰器。
Python2.4以后,支持使用标识符@对函数应用装饰器,只需在函数定义前加上@和装饰器名称即可。
代码:
#编码=utf-8
导入时间
#定义装饰者
定义日志(函数):
定义包装(*args,**kw):
“打印”调用函数是%s %func。__姓名_ _
返回函数(*args,**kw)
返回包装
@日志
立即定义():
now=time . strftime( % Y-% M-% d % H-% M-% S )
现在“打印”当前时间是%s
现在()结果:
以上就是python decorator的详细介绍细节。更多信息请关注热门IT软件开发工作室其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。