python修饰器

修饰器:

简而言知就是修饰一个器,这个器被称之为修饰对象。

这个修饰对象可以是一个函数,一个类...

也就是说这个修饰器是在不改变原来的函数/类的情况下,对函数或者类进行功能的补充。

利用一个嵌套函数,嵌套函数里面的一层写你修饰的功能,并且将要修饰的函数放在里面。最后return你所定义的函数(记住不要加括号,只要返回内存地址即可)

如果需要调用这个修饰方法。那么只需要在你要修饰的函数的前面一行使用@函数#这里的函数是嵌套函数的函数名。

如下案例(这个是修饰没有参数的):

 1 #!usr/bin/env python
 2 #encding:utf-8
 3 #by i3ekr
 4 
 5 import time
 6 def pro(func):
 7     def de():
 8         start_time = time.time()
 9         func()
10         end_time = time.time()
11         print("the fun run thime is %s"%(end_time-start_time))
12     return de
13 
14 @pro
15 def f1():
16     time.sleep(3)
17     print "this is f1..."
18 
19 f1()

 如下案例是修饰有参数的(嵌套函数的第二个函数使用*args,**kwargs,使用函数的也是直接*args,**kwargs):

 1 #!usr/bin/env python
 2 #encding:utf-8
 3 #by i3ekr
 4 
 5 import time
 6 
 7 def pro(func):
 8     def de(*args,**kwargs):
 9         start_time = time.time()
10         func(*args,**kwargs)
11         end_time = time.time()
12         print("the func run time is %s"%(end_time-start_time))
13     return de
14 
15 @pro
16 def f1(name):
17     time.sleep(3)
18     print "start...[%s]"%name
19 
20 
21 
22 f1('aaaaaaa')
原文地址:https://www.cnblogs.com/nul1/p/8909727.html