关于python装饰器的详细介绍-Python教程

资源魔 46 0

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()

后果:

fcfec4bdd26d4fe04b373dfe9d0e3e3.png

如今假如咱们想给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()

后果:

8adc034015841583def5e2f979887d6.png

以上就是对于python装璜器的具体引见的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题 装饰器

抱歉,评论功能暂时关闭!