"""
装饰器: 不改变原函数的调用方式和函数的前提下, 增加额外的功能, 其本质就是一个闭包
---输出函数的运行时间
"""
import time
from functools import wraps
def get_running_time(func):
# 使用wraps, 保证被装饰过的函数__name__的属性不变
@wraps(func)
def inner(*args, **kwargs):
start_time = time.time()
res = func(*args, **kwargs)
end_time = time.time()
print('the {} running time is {}'.format(func.__name__, (end_time - start_time)))
return res
return inner
@get_running_time
def run1000000():
lst = []
for i in range(1000000):
lst.append(i)
return lst
@get_running_time
def run1000000_2():
return [i for i in range(1000000)]
run1000000()
run1000000_2()
# 运行结果
# the run1000000 running time is 0.16900038719177246
# the run1000000_2 running time is 0.09100198745727539