装饰器
1、为原函数增加功能,但是不能修改原函数。
2、不能修改原函数调用方式。
1、
import time
def timmer(func):
def Warp(*args,**kwargs):
Start_time=time.time()
func()
Stop_time=time.time()
print("the func runtime: %s" %
(Stop_time-Start_time))
return Warp
@timmer #语法糖 test=timmer(test)
def test():
time.sleep(3)
print("in the test")
test()
运行结果:in the test
the func runtime: 3.1024303436279297
为原函数增加一个方法timmer()
2、
import time
def bar():
time.sleep(3)
print("in the bar")
def test(func):
Start_time=time.time()
func()
Stop_time=time.time()
print(Stop_time-Start_time)
return func
bar=test(bar) #return bar
运行结果:in the bar
3.0000507831573486
3、
import time
def timmer(func):
def foo():
Start_time=time.time()
func()
Stop_time=time.time()
print(Stop_time-Start_time)
return foo
@timmer #test=timmer(test)=foo 上面为新加的函数功能
def test():
time.sleep(3)
print("in the test")
test=timmer(test)
test() #foo()
运行结果:in the test
3.000030517578125