1.不带参数
import time
def showtime(func):
def wrapper():
start_time = time.time()
func()
end_time = time.time()
print('spend is {}'.format(end_time - start_time))
return wrapper
@showtime #foo = showtime(foo)
def test1():
print('test1..')
time.sleep(3)
@showtime #doo = showtime(doo)
def test2():
print('test2..')
time.sleep(2)
test1()
test2()
2.带参数
import time
def showtime(func):
def wrapper(*xargs, **kwargs):
start_time = time.time()
func(*xargs, **kwargs)
end_time = time.time()
print('spend is {}'.format(end_time - start_time))
return wrapper
@showtime #add = showtime(add)
def add(a, b):
print(a+b)
time.sleep(1)
@showtime #sub = showtime(sub)
def sub(a):
print(a)
time.sleep(1)
add(5,4)
sub(3)
3.装饰器带参数
import time
def showtime(test):
def outwrapper(func):
def wrapper(*xargs, **kwargs):
start_time = time.time()
func(*xargs, **kwargs)
end_time = time.time()
print(test)
print('spend is {}'.format(end_time - start_time))
return wrapper
return outwrapper
@showtime(test="hello") #add = showtime(add)
def add(a, b):
print(a+b)
time.sleep(1)
@showtime("nihao") #sub = showtime(sub)
def sub(a):
print(a)
time.sleep(1)
add(5,4)
sub(3)