编写一个使用@datafilter
时间: 2024-05-05 21:18:09 浏览: 110
装饰器的Python函数,用于过滤输入数据中的敏感信息。请给出代码实现。
好的,以下是实现代码:
```python
def datafilter(func):
def wrapper(*args, **kwargs):
data = args[0]
filtered_data = []
sensitive_data = ['password', 'credit_card', 'ssn'] # 敏感信息列表
for d in data:
if isinstance(d, dict):
for key, value in d.items():
if key in sensitive_data:
d[key] = "****" # 敏感信息替换为星号
filtered_data.append(d)
else:
filtered_data.append(d)
result = func(filtered_data, **kwargs) # 调用原函数并传入过滤后的数据
return result
return wrapper
```
使用示例:
```python
@datafilter
def my_function(data):
# 函数操作
pass
my_data = [{'name': 'John', 'password': '123456'}, {'name': 'Mary', 'credit_card': '1234 5678 9101 1121'}]
result = my_function(my_data)
print(result)
```
在上面的示例中,我们定义了一个名为 `datafilter` 的装饰器函数,它接受一个函数作为参数,并返回一个新的包装函数 `wrapper`。`wrapper` 函数接受任意数量的位置和关键字参数,并过滤输入数据中的敏感信息,然后调用传入的原函数并传入过滤后的数据。在示例中,我们应用 `datafilter` 装饰器到 `my_function` 函数上,并使用带有敏感信息的字典列表调用 `my_function` 函数。最后,我们打印出函数的返回结果。由于我们已经使用 `datafilter` 装饰器包装了 `my_function` 函数,因此输入数据中的敏感信息已被过滤。
阅读全文