2015-02-11 78 views
1

我認爲每個對象都是基於密鑰的id爲什麼Python在交換變量時交換變量ID

>>> a = 10 
>>> b = 20 
>>> id(a) 
1876869280 
>>> id(b) 
1876869440 
>>> a,b=b,a 
>>> id(a) 
1876869440 
>>> id(b) 
1876869280 

交換變量時,它們的ID也被交換。如果每個對象都有一個唯一的id,那麼爲什麼id被交換?交換後我認爲id(a)id(b)將相同。

+0

什麼伊格納西奧說。您可能會發現閱讀SO成員Ned Batchelder編寫的這篇文章很有幫助:[關於Python名稱和值的事實和神話](http://nedbatchelder.com/text/names.html)。 – 2015-02-11 03:28:31

+0

[一張圖片勝過千言萬語](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables) – jfs 2015-02-11 04:14:39

回答

6

如果每個對象都有唯一的id,那麼爲什麼id被交換?

因爲交換了對象。對象不是ab,它們是1020ab只是代碼用來引用這些對象的名稱。