python 装饰器@
时间: 2023-10-04 17:09:01 浏览: 94
装饰器是 Python 中一种特殊的语法结构,通过在函数定义前使用 @ 符号,可以用来对函数进行扩展、修改或包装。装饰器可以在不修改原函数代码的情况下,通过添加额外的功能来增强函数的行为。
实际上,装饰器本质上是一个函数,它接受一个函数作为输入,并返回一个新的函数作为输出。可以将装饰器理解为一个包装器,用来包装原函数。
下面是一个简单的装饰器示例,实现在函数执行前后打印日志:
```python
def logger(func):
def wrapper(*args, **kwargs):
print("函数执行前")
result = func(*args, **kwargs)
print("函数执行后")
return result
return wrapper
@logger
def add(a, b):
return a + b
print(add(2, 3)) # 输出:函数执行前\n函数执行后\n5
```
在上面的示例中,`logger` 是一个装饰器函数,它接受一个函数作为参数,并定义了一个内部函数 `wrapper`。`wrapper` 函数负责在原函数执行前后打印日志,并调用原函数。通过在 `add` 函数定义前添加 `@logger`,可以将 `add` 函数传递给 `logger` 装饰器进行包装。
当调用 `add(2, 3)` 时,实际上是调用了被装饰后的 `wrapper` 函数,而 `wrapper` 函数在执行原函数前后打印了日志。
这只是一个简单的装饰器示例,实际上装饰器可以实现更复杂的功能,比如缓存、权限控制、性能分析等。装饰器在 Python 中被广泛应用,在框架和库中常见。
阅读全文