python装璜器就是用于拓展原来函数性能的一种函数,目的是正在没有扭转原函数名(或类名)的状况下,给函数添加新的性能。装璜器实质上就是一个闭包,闭包是装璜器的外围。
界说
(保举教程:python教程)
python装璜器(fuctional decorators)就是用于拓展原来函数性能的一种函数,目的是正在没有扭转原函数名(或类名)的状况下,给函数添加新的性能。
这个函数的非凡的地方正在于它的前往值也是一个函数,这个函数是内嵌“原“”函数的函数。
详解
装璜器其实就是一个闭包,把一个函数当作参数后前往一个代替版函数,闭包是装璜器的外围。
简略诠释下闭包的特性:
一个函数前往的函数工具,这个函数工具执行的话依赖非函数外部的变量值,这个时分,函数前往的实际内容以下:
一、函数工具;
二、函数工具需求应用的内部变量以及变量值;
以上就是闭包,闭包必需嵌套正在一个函数里,必需前往一个挪用内部变量的函数工具,才是闭包。
举例:
#encoding=utf-8 import time def now(): print "current time is %s" %time.strftime("%Y-%m-%d %H-%M-%S") res=now res()
后果:
如今假如咱们想给now()函数添加一些此外性能,比方正在挪用该函数先后主动打印一些日记,但又没有心愿修正原now()的界说,这时候候咱们的装璜器就配上用场了。
实质上,decorator就是一个前往函数的高阶函数。以是咱们需求界说一个能打印日记的的decorator
Python2.4当前,支持应用标识符@将装璜器使用到函数上,只要要正在函数的界说前加之@以及装璜器的称号便可
代码:
#encoding=utf-8 import time #界说装璜器 def log(func): def wrapper(*args,**kw): print "call func is %s" %func.__name__ return func(*args,**kw) return wrapper @log def now(): now = time.strftime("%Y-%m-%d %H-%M-%S") print "current time is %s" %now now()
后果:
以上就是对于python装璜器的具体引见的具体内容,更多请存眷资源魔其它相干文章!
标签: Python python教程 python编程 python使用问题 装饰器
抱歉,评论功能暂时关闭!