理解 Python 解释器内部的问题

Problem understanding the Python interpreter internals

我有这段非常短的代码,但我很难理解 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 解释器定义的实施

字典仍包含对原始列表的引用。 lista = [1, dict] 不修改该列表;它只会使名称 lista 引用 new 列表。

您可能需要阅读 https://nedbatchelder.com/text/names.html 以更深入地探索 Python 变量的工作原理。