装饰器是Python中一项强大的功能,它允许开发者在不修改原有代码结构的情况下,为函数或方法添加新的功能。这种特性在日志记录、性能测试、事务处理等场景中尤为实用。
装饰器的本质是一个高阶函数,它接受一个函数作为参数,并返回一个新的函数。下面是一个简单的装饰器示例:
def simple_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@simple_decorator
def say_hello():
print("Hello!")
say_hello()
运行上述代码,将会输出:
函数执行前
Hello!
函数执行后
除了函数装饰器,Python还支持类装饰器。类装饰器通过实现__call__
方法来实现类似函数装饰器的功能。此外,Python 3.7引入的dataclasses
模块就是一个很好的类装饰器应用实例。
装饰器还可以接受参数,这需要再多一层嵌套。例如,可以创建一个带参数的装饰器来控制某些行为:
def repeat(num_times):
def decorator_repeat(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator_repeat
@repeat(num_times=3)
def greet(name):
print(f"Hello {name}")
greet("World")
掌握装饰器不仅能让代码更加简洁优雅,还能提高代码的可重用性和可维护性。它是Python编程中不可或缺的高级技巧之一。