介绍
装饰器(Decorators)是Python中一种非常强大且有用的功能,它允许我们在不修改原有函数或方法定义的情况下,为其添加额外的功能。装饰器本质上是一个高阶函数,它接收一个函数作为参数,并返回一个新的函数。
定义
装饰器的语法使用`@`符号,它通常放在函数定义之前。一个简单的装饰器示例如下:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
运行上面的代码,你会看到装饰器在函数执行前后添加了额外的输出。
案例讲解
让我们来看一个更实际的例子,假设我们有一个函数,它计算两个数的和,并且我们希望记录每次调用这个函数的时间和结果。
import time
def log_execution_time(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Function {func.__name__} executed in {end_time - start_time:.4f} seconds")
return result
return wrapper
@log_execution_time
def add(a, b):
time.sleep(1) # Simulate a time-consuming task
return a + b
result = add(3, 4)
print(f"The result is: {result}")
在这个例子中,`log_execution_time`装饰器记录了`add`函数的执行时间,并且返回了函数的执行结果。通过运行上面的代码,你可以看到装饰器如何工作。
总结
装饰器是Python中一个非常强大的功能,它允许我们在不修改原有函数定义的情况下,为其添加额外的功能。通过使用装饰器,我们可以实现代码复用,并使代码更加模块化和可维护。希望这篇教程能帮助你更好地理解Python中的装饰器,并在实际项目中加以应用。