import time
def cal_time(fn):
"""计算程序运行时间的函数"""
def inner(x, *args, **kwargs):
start_time = time.time()
print(args) # 元组解包,('lisa',)
print(kwargs) # 字典解包,{'y':'hell'}
ret = fn(x) # 调用func(x)
end_time = time.time()
print("程序一共运行了%s" % (end_time - start_time) + '秒')
return ret # 返回inner函数的返回值
return inner # 返回内部函数引用
@cal_time # 相当于:cal_time(func)
def func(n):
"""带有返回值的求阶乘的函数"""
x = 1
for i in range(1, 10000):
x *= i
return x # 返回数字10000
# 相当于调用 func = cal_time(func) 调用的是装饰器中的inner函数
result = func(10, 'lisa', y='hello') # 传入多个参数
print(result)