看板 Python 關於我們 聯絡資訊
狀況1 >>> a=3 >>> b=a >>> a=4 >>> b 3 狀況2 >>> a=[1,2,3] >>> b=a >>> a[0]=7 >>> b [7, 2, 3] 問一下各位高手 狀況1 b的值 為何不會因a的改變 而改變 還是狀況1的a不是物件呢? 希望高手解惑 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.83.167.17 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1493901341.A.EFF.html
shimachokong: 你的狀況1第二行是不是想打a=b? 05/04 21:11
shimachokong: 抱歉,是b=a? 05/04 21:13
shimachokong: http://mcfloundinho.tk/python-mutable.html 05/04 21:16
ides13: 因為是淺複製。用deepcopy就不會了。 05/04 21:18
※ 編輯: me8z7gnk (36.235.133.51), 05/04/2017 22:16:15
me8z7gnk: 謝謝S大 已改 謝謝你貼的文章 05/04 22:16
me8z7gnk: 謝謝S大 原來一開始的a跟b都是名稱,明白了,謝謝 05/04 22:22
me8z7gnk: 謝謝i大 我會去看看淺複製的 05/04 22:22
timTan: 為什麼會? 請吧a b 想成是標籤 05/04 23:55
timTan: 3 跟4個別是存在記憶體內。永遠不會改變 05/04 23:55
minikai: 我怎麼覺得這跟物件導向無關啊... 05/05 02:16
bibo9901: a[0]=7實際上是 a.__setitem__(0, 7) 和 a=4 本質不同 05/05 02:18
bibo9901: 4這個int 並沒有提供方法讓你去改裡面的值 05/05 02:19
ides13: pythontutor提到一個動畫解釋這個問題,把程式碼貼上執行 05/05 06:12
zerof: 是 OOP 沒錯, keyword 是 mutable & immutable objects 05/05 11:43
me8z7gnk: 謝謝 bibo9901跟zerof 05/05 23:44
me8z7gnk: 問過才知道 物件原來有mutable & immutable兩種類型 05/05 23:44
me8z7gnk: 會在試試 ides13 所提到的網站 05/05 23:44