2014-10-09 29 views
-1

我剛開始做Python,所以這對我來說很困惑。字典鏈接分配只產生一個副本?

這一次打印4

a = b = 4 
a = 3 
print b 

然而,這一個打印{ 'A':1}

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

那麼,爲什麼這種差異?我認爲它與可變性有關,但不是int也是可變的嗎?

+3

誰說整數是可變的? – 2014-10-09 07:53:15

+0

我們的上帝說int是不可變的:P – 2014-10-09 15:02:43

回答

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 

因此,當嘗試以提供不同的對象(= 3)的新refrence被實例化的對象。