你能解释一下下面的python(dict)代码是如何工作的吗?

你能解释一下下面的python(dict)代码是如何工作的吗?,python,dictionary,data-structures,Python,Dictionary,Data Structures,/*sample2引用sample,但当我用{}更新sample时,sample2仍然有旧的键和值*/ sample={1:'one',2:'two',3:'three'} sample2=sample #reference sample3=sample.copy() #using copy method sample {1: 'one', 2: 'two', 3: 'three'} sample2 {1: 'one', 2: 'two', 3: 'three'} sample3 {1:

/*sample2引用sample,但当我用{}更新sample时,sample2仍然有旧的键和值*/

sample={1:'one',2:'two',3:'three'}
sample2=sample   #reference
sample3=sample.copy()   #using copy method
sample
{1: 'one', 2: 'two', 3: 'three'}
sample2
{1: 'one', 2: 'two', 3: 'three'}
sample3
{1: 'one', 2: 'two', 3: 'three'}
sample.popitem()
(1, 'one')
sample
{2: 'two', 3: 'three'}
sample2
{2: 'two', 3: 'three'}
sample3
{1: 'one', 2: 'two', 3: 'three'}
sample={}
sample2
{2: 'two', 3: 'three'}

/*为什么sample2仍然具有这些值,尽管它是样本的参考。

sample2
不是对
sample
的参考,而是对
sample
具有的值的参考。当您执行
sample={}
时,旧值仍然存在,
sample2
仍然引用它,但是
sample1
现在引用的是
{}

sample2
不是
sample
的引用!它是对相同的值的引用(内存中的字典数据结构),该值也被命名为/reference
sample

在Python中,一个名称不能引用另一个名称。名称指的是值。总是


sample={}
将名称
sample
重新分配给另一个值
sample2
不关心这个问题。

注意,这与dict对象无关,这就是Python中的一切工作方式。请阅读以下内容: