简述对装饰器的理解,并写出一个计时器记录方法执行性能的装饰器? ?
参考答案:
装饰器是 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
的执行时间。