您gui_texts
通过将 a 设置为 gui_texts 然后对其进行修改来递归地添加自身。
>>> gui_texts = {}
>>> gui_texts
{}
>>> import json
>>> gui_texts['entireText'] = json.dumps(gui_texts)
>>> gui_texts
{'entireText': '{}'}
>>> gui_texts['entireText'] = json.dumps(gui_texts)
>>> gui_texts
{'entireText': '{"entireText": "{}"}'}
如果你 make a = gui_texts
,不要添加gui_texts
到 a/本身。
在 json 转储之前将整个文本设置为 {} 会破坏递归,但仍应避免。当您将 gui_texts 添加到自身时,您已将整个文本重置为空字典,而不是之前的序列化,这会阻止它增长。
>>> gui_texts = {}
>>> gui_texts['entireText'] = {}
>>> gui_texts
{'entireText': {}}
>>> gui_texts['entireText'] = json.dumps(gui_texts)
>>> gui_texts
{'entireText': '{"entireText": {}}'}
>>> gui_texts['entireText'] = {}
>>> gui_texts
{'entireText': {}}
>>> gui_texts['entireText'] = json.dumps(gui_texts)
>>> gui_texts
{'entireText': '{"entireText": {}}'}
您可能想要制作 gui_texts 的副本,例如 gui_textsa = gui_texts.copy()
是否来自代码,并且您想在显示它之前进行修改
模块变量在所有线程之间共享,只有线程本地是线程本地的。您不会为每个页面请求启动一个包含所有导入等的新解释器。修改这些的能力可能非常强大,但如果您不完全了解正在发生的事情,有时可能会咬到您。