计算代码执行时间--带有多个参数的装饰器

示例代码:

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)
View Code

运行结果:

原文地址:https://www.cnblogs.com/yujiemeigui/p/14612178.html