理解Python解释器内部存在问题



我有一段很短的代码,但我很难理解Python解释器是如何工作的。我用这个列表创建了一个列表和一个字典。

lista = [1,2,3]
dict = {1: lista}
print(lista)
print(dict)

这是输出,这里没有什么奇怪的:

[1, 2, 3]
{1: [1, 2, 3]}

然而,如果我更改列表,使其现在包含词典。。。

lista = [1, dict]
print(lista)
print(dict)

我得到了这个输出:

[1, {1: [1, 2, 3]}]
{1: [1, 2, 3]}

该列表已更新,我希望词典会有更新列表的副本,但这并没有发生。我意识到我正在创建一个循环,我认为这个循环是以这种方式处理的,所以我想知道这是由Python语言或Python解释器实现定义的

dict仍然包含对原始列表的引用。lista = [1, dict]不修改该列表;它仅使名称CCD_ 2引用列表。

你可能想阅读https://nedbatchelder.com/text/names.html以更深入地探索Python变量是如何工作的。

最新更新