理解 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 变量的工作原理。
我有这段非常短的代码,但我很难理解 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 变量的工作原理。