python中的装饰器
时间: 2023-10-23 15:25:28 浏览: 51
装饰器是Python中非常重要的语法特性,它可以修改函数或类的行为。装饰器本质上是一个函数,它可以接收一个函数作为参数,并返回一个新的函数。
在Python中,我们可以使用装饰器来扩展原有函数的功能,例如添加日志、实现缓存等。装饰器的语法格式如下:
```python
@decorator
def func():
pass
```
其中,`decorator`是装饰器函数,它会接收`func`函数作为参数,并返回一个新的函数。在上面的语法中,`@decorator`相当于执行了以下代码:
```python
func = decorator(func)
```
下面是一个装饰器的例子,它可以在函数执行前后打印日志:
```python
def log(func):
def wrapper(*args, **kwargs):
print(f"start {func.__name__}")
result = func(*args, **kwargs)
print(f"end {func.__name__}")
return result
return wrapper
@log
def add(a, b):
return a + b
print(add(1, 2)) # 输出 start add 3 end add
```
在这个例子中,我们定义了一个`log`装饰器,它接收一个函数作为参数,并返回一个新的函数`wrapper`。`wrapper`函数会在执行原有函数之前和之后打印日志,并且会返回原有函数的执行结果。通过在`add`函数上添加`@log`装饰器,我们实现了在函数执行前后打印日志的功能。