链接字典的分配只产生一个副本?

时间:2014-10-09 07:50:31

标签: python dictionary reference

我刚开始做Python,所以这对我来说非常困惑。

这个打印4

a = b = 4
a = 3
print b

但是,这个会打印{'a':1}

d1 = d2 = {}
d1['a'] = 1
print d2

那么为什么会出现这种差异呢?我认为这与可变性有关,但是int也不可变吗?

1 个答案:

答案 0 :(得分:1)

这里有& b是不可变类型。 whilr字典是可变类型。

尝试id()功能,它会告诉你确切的故事。

d1 = d2 = {}
print id(d1), id(d2)
d1['a'] = 1
print d2
print id(d1),'\n' ,id(d2)

#id(d1) :-140468952760680 
#id(d2):-140468952760680
#ID remian same.
a = b = 4
print id(a),'\n' ,id(b)

#id(a):- 12083536 
#id(b):- 12083536

a = 3
print b, id(a), id(b)

#id(a):-12083560 # it is changes
#id(b):-12083536

因此,当尝试提供不同的对象(a = 3)时,会为对象实例化一个新的参考。