#–author:zhaozhao
#date:2020/07/31
import time
def foo():
print("foo....")
time.sleep(2)
def bar():
print("bar....")
time.sleep(3)
def show_time(f):
def inner():
start=time.time()
f()
end=time.time()
print("spend %s"%(end-start))
return inner # 返回函数名
fo=show_time(foo)
fo() # 执行函数
ba=show_time(bar)
ba()
装饰器@show_time
import time
def show_time(f):
def inner():
start=time.time()
f()
end=time.time()
print("spend %s"%(end-start))
return inner#返回地址
@show_time # 相当于foo=show_time(foo)
def foo():
print("foo....")
time.sleep(2)
@show_time # 相当于bar=show_time(bar)
def bar():
print("bar....")
time.sleep(3)
foo()
bar()
结果展示和第一次相同,均为
foo…
spend 2.0005874633789062
bar…
spend 3.00005841255188
函数加参数
import time
def show_time(f):
def inner(*a,**b):
start=time.time()
f(*a,**b)
end=time.time()
print("spend %s"%(end-start))
return inner # 返回函数名
@show_time # 相当于add=show_time(add)
def add(*a,**b):
sums=0
for i in a:
sums+=i
print(sums)
time.sleep(1)
add(1,2,3,4,5,6) # 执行语句
装饰器加参数
import time
def logger(flag):
def show_time(f):
def inner(*a,**b):
start=time.time()
f(*a,**b)
end=time.time()
print("spend %s"%(end-start))
if flag=="true":
print("日志记录")
return inner#返回地址
return show_time
@logger("true") # 里面有一个判断实参
def add(*a,**b):
sums=0
for i in a:
sums+=i
print(sums)
time.sleep(1)
add(1,2,3,4,5,6)