3 回答

TA貢獻1784條經(jīng)驗 獲得超7個贊
我的理解: b 現(xiàn)在指的是兩個對象, . . .
那是不正確的。一個名稱不能同時與給定范圍內(nèi)的多個對象相關(guān)聯(lián)。
b = a
與關(guān)聯(lián)的b
對象關(guān)聯(lián)。a
該行執(zhí)行后,將沒有任何內(nèi)容被引用['a', 'b']
,并且該列表應(yīng)該符合垃圾回收條件,因為它不能再被使用。

TA貢獻1842條經(jīng)驗 獲得超22個贊
不要把對象想成指針,我認為那是你困惑的根源。這不是“b 指向 a”或“a 指向 b”,它與綁定到對象有關(guān)。我認為看看id會有用
>>> a = [1, 2, 3]
>>> id(a)
1833964774216
>>> b = a
>>> id(b)
1833964774216
在這種情況下,a和b都綁定到該列表。因此,任何要列出的突變1833964774216都會反映在兩個對象中。但我可以重新分配(或重新綁定)到一個完全不同的對象
>>> b = [4, 5, 6]
>>> id(b)
1833965089992
>>> b
[4, 5, 6]
這對沒有任何影響,a因為它仍然綁定到原始列表
>>> a
[1, 2, 3]
>>> id(a)
1833964774216

TA貢獻1963條經(jīng)驗 獲得超6個贊
讓我們了解名稱和對象之間的區(qū)別。在您的例子中,a 和 b 是名稱,分配給 a 和 b 的列表“[1,2,3]”是對象。最初 a = [1,2,3] 并且在 a 被分配給 b 即 b=a 之后,在這種情況下 a 和 b 都綁定到同一個列表對象。這意味著您可以使用名稱 a 或 b 中的任何一個來更改該列表對象的值。
這可以通過將分配給 a 的列表復(fù)制到 b 來解決,
b = a.copy()
這將創(chuàng)建分配給 b 的同一對象的副本
添加回答
舉報