Python中wrapper
时间: 2023-08-27 11:20:12 浏览: 180
Python库 | dash-wrapper-0.1.6.tar.gz
在 Python 中,wrapper 是一个常见的编程模式,用于在不修改原函数代码的情况下,给函数添加额外的功能。
在 wrapper 模式中,我们定义一个新的函数,将原函数作为参数传入,并在新函数中调用原函数。在新函数中,我们可以添加一些额外的代码,例如日志记录、性能统计、异常处理等等。
下面是一个简单的例子,演示如何使用 wrapper 模式给函数添加日志记录功能:
```
def logging_wrapper(func):
def wrapper(*args, **kwargs):
print("calling function:", func.__name__)
result = func(*args, **kwargs)
print("function returned:", result)
return result
return wrapper
@logging_wrapper
def add(a, b):
return a + b
# 调用函数
result = add(1, 2)
print(result)
```
在上面的代码中,我们定义了一个 `logging_wrapper` 函数,它接受一个函数作为参数,并返回一个新的函数。在新函数中,我们首先打印一条日志,指示正在调用的函数名称。然后,我们调用原函数,保存返回值,并再次打印一条日志,指示函数已经返回。最后,我们返回原函数的返回值。
我们使用 `@logging_wrapper` 语法将 `add` 函数装饰成一个带有日志记录功能的函数。然后,我们调用 `add` 函数,它会自动调用 `logging_wrapper` 函数,并在调用 `add` 函数时记录日志。最后,我们输出 `add` 函数的返回值。
需要注意的是,wrapper 模式可以用于给任何函数添加额外的功能,而不仅仅是日志记录。例如,我们可以使用 wrapper 模式来添加性能统计、异常处理、输入验证等等。
阅读全文