修饰器:
简而言知就是修饰一个器,这个器被称之为修饰对象。
这个修饰对象可以是一个函数,一个类...
也就是说这个修饰器是在不改变原来的函数/类的情况下,对函数或者类进行功能的补充。
利用一个嵌套函数,嵌套函数里面的一层写你修饰的功能,并且将要修饰的函数放在里面。最后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')