定义一个装饰器函数,将如下函数的运行结果记录至文件中。 def calculate_sum(a, b): return a + b
时间: 2024-10-02 22:04:36 浏览: 26
要创建一个装饰器来记录函数`calculate_sum`的运行结果到文件中,可以按照下面的步骤编写装饰器函数。首先,我们需要导入必要的模块,比如`functools`用于保存函数的元数据,以及`open`和`json`用于处理文件操作。假设我们想要将结果以JSON格式存储在一个名为`results.txt`的文件中。
```python
import json
import functools
def log_result(filename='results.txt'):
def decorator(func):
@functools.wraps(func) # 保留原函数的元信息
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
with open(filename, 'a') as file:
data = {
'function_name': func.__name__,
'arguments': (args, kwargs),
'result': result,
'datetime': datetime.datetime.now().isoformat()
}
json.dump(data, file, ensure_ascii=False, indent=4) # 将数据写入文件
return result
return wrapper
return decorator
@log_result()
def calculate_sum(a, b):
return a + b
# 调用并测试装饰器
calculate_sum(5, 7)
```
在这个例子中,`log_result`是一个装饰器函数,它接受一个可选的`filename`参数。装饰器内部的`wrapper`函数会在计算结果后将其写入文件,同时包含函数名、输入参数、计算结果和当前时间等信息。
当调用`calculate_sum(5, 7)`时,不仅会返回5+7的结果,还会把这次调用的数据添加到`results.txt`文件中。
阅读全文