# convert a function into recursive style to handle nested dict/list/tuple variable
时间: 2024-02-12 15:04:31 浏览: 107
以下是将一个函数转换为递归样式,以处理嵌套的字典/列表/元组变量的示例代码:
```
def recursive_func(func):
def wrapper(obj):
if isinstance(obj, (dict,)):
return {k: wrapper(v) for k, v in obj.items()}
elif isinstance(obj, (list,)):
return [wrapper(elem) for elem in obj]
elif isinstance(obj, (tuple,)):
return tuple([wrapper(elem) for elem in obj])
else:
return func(obj)
return wrapper
```
该代码定义了一个递归函数装饰器`recursive_func`,它接受一个函数`func`作为参数,并返回一个新函数`wrapper`。`wrapper`函数接受一个参数`obj`,并根据`obj`的类型选择适当的处理方式:
- 如果`obj`是一个字典,则对字典中的每个键值对递归调用`wrapper`,并返回新的字典;
- 如果`obj`是一个列表,则对列表中的每个元素递归调用`wrapper`,并返回新的列表;
- 如果`obj`是一个元组,则对元组中的每个元素递归调用`wrapper`,并返回新的元组;
- 否则,调用原始函数`func`对`obj`进行处理,并返回处理结果。
通过使用该装饰器,我们可以将原始函数转换为支持嵌套变量的递归版本,使其更加灵活和通用。
阅读全文