Python装饰器:让代码优雅复用的魔法
在Python中,装饰器(Decorator)是一种强大而优雅的工具,它允许我们在不修改原始函数代码的情况下,为其添加新功能。这就像给函数“穿上外套”,既保持了原有功能,又增加了额外特性。
装饰器基础
装饰器本质上是一个高阶函数,它接受一个函数作为参数,并返回一个新的函数。最简单的装饰器示例:
def simple_decorator(func):
def wrapper():
print("函数执行前")
func()
print("函数执行后")
return wrapper
@simple_decorator
def say_hello():
print("Hello, World!")
say_hello()
输出:
函数执行前
Hello, World!
函数执行后
实际应用场景
装饰器在Web开发、日志记录、性能测试等方面都有广泛应用。例如,创建一个计时装饰器:
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 执行时间: {end-start:.4f}秒")
return result
return wrapper
@timer
def slow_function():
time.sleep(1)
return "完成"
slow_function()
为什么使用装饰器?
- 代码复用:相同的增强功能可以在多个函数中使用
- 代码简洁:避免在每个函数中重复相同的代码
- 关注点分离:业务逻辑和横切关注点(如日志、验证)分离
装饰器是Python函数式编程的重要组成部分,掌握它能让你写出更加简洁、优雅且可维护的代码。从简单的函数装饰器到带参数的类装饰器,这个功能强大的工具值得每个Python开发者深入学习和掌握。
试着为你项目中的函数添加一些装饰器,你会发现代码的可读性和可维护性将得到显著提升!