在 python 中赋值语句总是建立对象的引用值,而不是复制对象。...>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
我预想应当是
[0, [0, 1, 2], 2]
但结果却为何要赋值无限次...可以说 Python 没有赋值,只有引用。你这样相当于创建了一个引用自身的结构,所以导致了无限循环。为了理解这个问题,有个基本概念需要搞清楚。...执行完毕后,values 标签还是指向原来那个对象,只不过那个对象的结构发生了变化,从之前的列表 [0, 1, 2] 变成了 [0, ?, 2],而这个 ? 则是指向那个对象本身的一个引用。...d,而不是引用全局变量d,所以d['b']=2也是操作的局部变量。