为什么 y 不打印空字典?
x = {}
y = x
print y
x['key'] = 'value'
print y
x = {}
print x,y
结果:
{}
{'key': 'value'}
{} {'key': 'value'}
最佳答案
首先你必须明白:
每当您在代码中说出
{}
时,Python 都会创建一个新字典。它基本上是dict()
的更短语法。Python 中的变量并不是真正的变量,它们只是名称。您可以将它们视为附加到值上的标签,类似于商店中的价格标签。这意味着您可以随意移动它们,并且对象本身不会改变。
让我们看一下代码中有意义的行:
x = {}
y = x
x['key'] = 'value'
x = {}
线路:
x = {}
:我们使用{}
创建一个新的字典,然后设置名称x
来引用该字典新词典。y = x
:这里我们将名称y
设置为指向现有的字典,该字典已经标记了名称x
它。该字典现在有两个名称。请注意,y
指向实际的字典,并且它不关心名称x
是否更改为指向其他内容。与商店中的价格标签类似,您可以移动其中一个而无需触摸另一个x['key'] = 'value'
:只需将一个项目添加到x
指向的字典中即可。这也可以是y['key'] = 'value'
并且输出将完全相同,因为x
和y
已附加到同一个字典。x = {}
:注意{}
,这意味着我们正在创建一个新字典!我们还设置名称x
指向这个新字典 - 保持原始字典和名称y
不变,因此y
仍然引用包含项目的原始字典。
这就是代码的结尾,现在打印 x
将输出一个空字典(第 4 行),但 y
仍然指向原始字典。
关于python - 编程: basic python assignment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712256/