python装饰器详解
时间: 2023-07-06 20:06:12 浏览: 46
Python 装饰器是一种函数,它可以用来修改其他函数的功能。在 Python 中,函数也是对象,因此可以将其作为参数传递给另一个函数,也可以将其作为返回值返回。
装饰器的语法是在函数定义之前使用 @ 符号,后面跟着装饰器函数名。装饰器函数会接收被装饰的函数作为参数,并返回一个新的函数。
下面是一个简单的装饰器示例:
```python
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
```
输出结果:
```
Before the function is called.
Hello!
After the function is called.
```
在这个例子中,我们定义了一个装饰器函数 `my_decorator`。它接收一个函数作为参数,并返回一个新的函数 `wrapper`,该函数在被装饰函数 `say_hello` 前后执行一些操作。
我们使用 `@my_decorator` 将装饰器应用于 `say_hello` 函数,这意味着每次调用 `say_hello` 时,实际上是调用了 `my_decorator(say_hello)` 返回的新函数 `wrapper`。因此,在执行 `say_hello` 时,会先打印 "Before the function is called.",然后执行 `say_hello` 函数本身,最后再打印 "After the function is called."。
装饰器可以用于许多不同的场景,例如添加日志记录、缓存、授权验证等。在 Python 中,有很多常用的装饰器,例如 `@staticmethod`、`@classmethod`、`@property` 等。
阅读全文