python装饰器讲解
时间: 2023-07-05 11:05:46 浏览: 46
装饰器是 Python 中的一个重要概念,它可以在不改变函数源代码的情况下,为函数添加功能。装饰器本质上是一个 Python 函数,但是它可以接收一个函数作为参数,并返回一个函数作为结果。在这个过程中,我们可以在不修改原始函数代码的情况下,扩展或修改功能。
下面是一个装饰器的例子:
```python
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
def say_hello():
print("Hello!")
say_hello = my_decorator(say_hello)
say_hello()
```
在这个例子中,`my_decorator` 是一个装饰器函数,它接收一个函数作为参数。`wrapper` 是一个内部函数,它包含了在原始函数前后执行的代码。在 `my_decorator` 中,我们返回一个函数 `wrapper`,它包装了原始函数 `say_hello`。最后,我们将装饰器应用到原始函数上,使用 `say_hello = my_decorator(say_hello)` 将装饰器应用到 `say_hello` 函数上。
装饰器的语法糖形式如下:
```python
@my_decorator
def say_hello():
print("Hello!")
```
这与上面的例子等价,使用 @ 符号将装饰器应用到函数上。
装饰器的实际应用非常广泛,比如可以用它来实现日志记录、性能测试、授权访问等功能。