python装饰器
当我们要扩展一个函数的功能,却不想修改原函数的时候,可以用装饰器,比如:
有函数function1:
1 def function1(val): 2 val += 1 3 return val
当我们想输出这个函数的执行时间时,通常可以考虑修改原函数:
1 from time import time 2 3 4 def function1(val): 5 start = time() 6 val += 1 7 end = time() 8 print("time cost {0}".format(end - start))
但是有时候我们不能修改原函数的代码,比如该函数为内置函数,或者第三方的,而且及时可以修改如果每个函数都需要该功能,就得修改所有的函数,很麻烦,此时,可以用python的装饰器功能,先建立一个需要扩展功能的装饰器:
1 from time import time 2 3 4 def deco(f): 5 def inner(*args,**kwargs): 6 start = time() #需要扩展的功能 7 f(*args,**kwargs) #执行被装饰的函数 8 end = time() #需要扩展的功能 9 print("time cost {0}".format(end - start) 10 return inner
然后在需要被扩展的函数上加上@deco即可扩展原函数的功能。
1 @deco 2 def function1(val): 3 val += 1 4 return val