所以我有一个烧瓶应用程序,基本上有助于编辑json文件。我摄取了json文件,将其转换为OrderedDict,然后允许用户在浏览器中编辑它。由于我使用的编辑器的功能,用户必须一次只编辑一个“子系统”,所以我有一个递归函数来查找他们编辑的子系统并在全局变量上更改了一个。
def update_dict_with_edits(main_dict, changed_dict):
if changed_dict["name"] == main_dict["name"]:
space_system_dict = changed_dict
return
if "sub_systems" not in main_dict:
return
for sub_system in main_dict["sub_systems"]:
update_dict_with_edits(sub_system, changed_dict)
在这里被称为:
@app.route('/updatedict', methods=['POST'])
def update_dict():
if request.method == 'POST':
changed_json_system = request.form.get('json_data', None)
changed_dict_system = json.loads(changed_json_system, object_pairs_hook=OrderedDict)
# the_dict_object.the_json is the global variable I want to edit
update_dict_with_edits(the_dict_object.the_json, changed_dict_system)
如果我把递归输出和硬编码它正在编辑的子系统,它就可以工作了:
space_system_dict["sub_system"][0] = changed_json_dict
但它不适用于当前设置。有什么事情不合适吗?这是关于如何调用递归使得它不再是被操纵的全局变量参数的问题吗?