python, 带参数的装饰器
时间: 2024-01-03 12:22:41 浏览: 35
带参数的装饰器是指在装饰器函数中传入参数,并根据这些参数对被装饰的函数进行特定的操作或修改。下面是一个示例:
```python
def loggers(msg):
def decorator(func):
def wrapper(*args, **kwargs):
print(msg.format(*args, **kwargs))
return func(*args, **kwargs)
return wrapper
return decorator
@loggers(msg='hello {}')
def demo(name):
"""演示函数"""
print("你好%s" % name)
return "wxhou"
if __name__ == '__main__':
demo('wxhou')
```
在上面的示例中,`loggers`是一个带参数的装饰器函数,它接受一个`msg`参数。装饰器函数内部定义了一个`decorator`函数,它接受被装饰的函数`func`作为参数。`decorator`函数内部又定义了一个`wrapper`函数,它接受任意数量的位置参数`*args`和关键字参数`**kwargs`。在`wrapper`函数中,首先打印出传入的`msg`参数,并调用被装饰的函数`func`,最后返回函数的返回值。
在示例中,我们使用`@loggers(msg='hello {}')`将`demo`函数装饰起来,传入的参数`msg`为`'hello {}'`。当调用`demo`函数时,会先打印出`'hello wxhou'`,然后再执行`demo`函数的内容。