python包装函数 带参数
时间: 2024-09-25 19:01:20 浏览: 41
在Python中,包装函数是一种设计模式,通常用来封装原始函数,提供额外的行为或者改变输入输出的方式。当你需要对某个函数做某种预处理、错误处理、日志记录或者其他定制操作时,可以创建一个包装函数。这个函数可以接受一些参数,允许你动态地调整它的行为。
例如,你可以创建一个包装函数`log_and_call`,它接受两个参数:原始函数`func`和日志级别`level`:
```python
def log_and_call(func, level='info', *args, **kwargs):
import logging
logger = logging.getLogger(__name__)
log_message = f"Calling {func.__name__} with args {args}, kwargs {kwargs}"
# 根据日志级别设置不同的行为
if level == 'debug':
logger.debug(log_message)
elif level == 'info':
logger.info(log_message)
else:
logger.warning(f"Unsupported log level: {level}")
try:
result = func(*args, **kwargs)
except Exception as e:
logger.error(f"An error occurred while calling {func.__name__}: {e}")
raise
return result
```
在这个例子中,`*args`和`**kwargs`用于捕获传递给原始函数的所有位置参数和关键字参数。通过这种方式,你可以传递任意数量的位置参数或键值对给原始函数。
阅读全文