你能解释一下下面的python(dict)代码是如何工作的吗?
/*sample2引用sample,但当我用{}更新sample时,sample2仍然有旧的键和值*/你能解释一下下面的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:
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
的引用!它是对相同的值的引用(内存中的字典数据结构),该值也被命名为/referencesample
在Python中,一个名称不能引用另一个名称。名称指的是值。总是
sample={}
将名称sample
重新分配给另一个值sample2
不关心这个问题。注意,这与dict对象无关,这就是Python中的一切工作方式。请阅读以下内容: