装饰器

Posted 徐小乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器相关的知识,希望对你有一定的参考价值。

装饰器所需要的知识:1.函数即“”变量“”        2.高阶函数        3嵌套函数

 

一。函数即变量

1.装饰器的本质是函数,就是为其他函数添加附加功能。

2.装饰器使用原则:1.不修改被装饰函数的源代码,

                                2.也不修改被装饰函数的调用方式。

 

3.变量是存在于内存当中,x=1,x在程序完成后就会被删除,或者del也可以删除x,但删除不了1,1是python定期刷新清理没有使用的变量时删除。

二,高阶函数

1,把一个函数名单做实参传给另一个函数

2,返回值中包含函数名

 def bar()

       print  ("in the bar")

bar#bar()是函数,根据函数即变量,可以得到bar是指向这个函数的内存地址。  

 def test1(func)

           print(func)

   test1(bar)#注意这里是函数名,而非函数,这才叫高阶函数。

 

def  too():

       def rrr():#这叫函数的调用,必须是def里面有def。

def too():

      rrr()#这叫 函数的调用。

完整事例如下:

#edit by weiwei xu

import time
def timer(func):#func=test1
def deco(*args,**kwargs):#传递参数
start_time=time.time()
func(*args,**kwargs)
stop_time=time.time()
print("the func run time is %s" % (stop_time-start_time))
return deco
@timer #test1=timer(test1) test1()=deco()
def test1():
time.sleep(3)
print("in the test1")
@timer
def test2(name,age):
time.sleep(3)
print("xww:",name,age)
test1()
test2(‘xww‘,22)
运行结果如下:

in the test1
the func run time is 3.000171661376953
xww: xww 22
the func run time is 3.000171422958374

以上是关于装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象学习之八,装饰器

thymeleaf 片段渲染后重新加载 javascript

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码

代码缺乏装饰?使用ts装饰器来装饰你的代码