跳到主要内容

简述对装饰器的理解,并写出一个计时器记录方法执行性能的装饰器? ?

参考答案:

装饰器是 Python 中的一个强大工具,它们允许你修改或增强函数或类的行为,而无需改变其源代码。装饰器本质上是一个接受函数作为参数的可调用对象(通常是函数),并返回一个新的函数。这个新的函数通常会包装或“装饰”原始函数,增加一些额外的功能。

装饰器在 Python 中通过 @ 符号和函数定义一起使用,使代码更加简洁、易读。

下面是一个简单的装饰器示例,用于记录方法的执行性能(即计时器):

import time

def timer_decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"Execution time of {func.__name__}: {end_time - start_time} seconds")
        return result
    return wrapper

@timer_decorator
def my_function():
    # 一些操作,例如:
    for i in range(1000000):
        pass

my_function()

在这个例子中,timer_decorator 是一个装饰器函数,它接受一个函数 func 作为参数。装饰器函数返回一个新的函数 wrapper,该函数在调用 func 之前和之后记录了时间,并打印了函数的执行时间。

使用 @timer_decorator 语法,我们可以将 timer_decorator 应用到 my_function 上。这样,当我们调用 my_function 时,实际上是在调用装饰器返回的 wrapper 函数,它会记录并打印 my_function 的执行时间。