介绍
介绍
福哥在使用json.dumps方法将变量转成JSON格式的字符串的时候系统报出了如下错误:
代码
这是出问题的代码。
import json myDict = [ 35, "福哥", ["Python"] ] myDictLangs = myDict[2] myDict[2][0] = myDictLangs print(json.dumps(myDict))
原因
从字面理解就是检测到了递归引用的情况,递归引用会造成无限死循环的异常,所以无法执行了!
福哥分析代码发现myDict[2]是一个list数组,后面代码对这个子数组下标为0的元素赋值myDictLangs,而myDictLangs和myDict[2]指向是同一块内存,这样肯定会造成死循环了,当然会报错嘛~~
解决
在编写代码的时候记得list、dict、tuple这类变量不能通过赋值创建一个完全独立的变量,需要自行循环复制才可以的。