python 通用的装饰器
时间: 2024-04-30 18:16:25 浏览: 101
Python中的装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不修改原函数代码的情况下,为函数添加额外的功能或者修改函数的行为。下面是几种常见的通用装饰器:
1. 函数装饰器:函数装饰器是最常见的装饰器类型,它可以在函数定义之前使用@符号来修饰函数。函数装饰器接受一个函数作为参数,并返回一个新的函数,通常用于在原函数执行前后添加额外的逻辑。例如:
```python
def decorator(func):
def wrapper(*args, **kwargs):
# 添加额外的逻辑
result = func(*args, **kwargs)
# 添加额外的逻辑
return result
return wrapper
@decorator
def my_function():
# 函数的原始逻辑
pass
```
2. 类装饰器:类装饰器是一种使用类来装饰函数或方法的装饰器。类装饰器通过实现`__call__`方法来实现装饰器的功能。例如:
```python
class Decorator:
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
# 添加额外的逻辑
result = self.func(*args, **kwargs)
# 添加额外的逻辑
return result
@Decorator
def my_function():
# 函数的原始逻辑
pass
```
3. 带参数的装饰器:装饰器也可以接受参数,可以通过在装饰器外再包裹一层函数来实现。例如:
```python
def decorator_with_args(arg1, arg2):
def decorator(func):
def wrapper(*args, **kwargs):
# 使用传入的参数arg1和arg2
# 添加额外的逻辑
result = func(*args, **kwargs)
# 添加额外的逻辑
return result
return wrapper
return decorator
@decorator_with_args(arg1, arg2)
def my_function():
# 函数的原始逻辑
pass
```
阅读全文