给我一个装饰器工厂的最简案例
时间: 2024-09-21 19:13:24 浏览: 51
装饰器工厂是一个高级技巧,它可以创建并返回可复用的装饰器,而不是直接在每次使用时都创建一个新的装饰器。这里有一个简单的例子:
```python
def decorator_factory(func_name):
def wrapper_function():
print(f"执行前的 {func_name} 函数")
func_name()
print(f"执行后的 {func_name} 函数")
return wrapper_function
@decorator_factory
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # 输出: 执行前的 greet 函数 Hello, Alice! 执行后的 greet 函数
greet("Bob") # 输出: 执行前的 greet 函数 Hello, Bob! 执行后的 greet 函数
```
在这个例子中,`decorator_factory` 是一个装饰器工厂函数,它接收一个函数名(在这个场景下,实际上我们传递的是 `greet` 函数)作为参数。内部定义了一个 `wrapper_function`,这个函数会在原函数前后添加额外的操作(如打印信息)。当我们使用 `@decorator_factory` 语法时,实际上是把 `greet` 函数作为参数传给了 `decorator_factory`,然后返回的新函数 `wrapper_function` 被自动应用到了 `greet` 上。
阅读全文