代碼如下:
a = 3
b = a
先上圖(圖1)吧,大家一看就一目了然了:
變量名和對象,在運行賦值語句b = a之后,變量a,b都指向了對象3的內存空間.
假設這時執行 a = 'python', a將指向剛創建的字符串對象。
我們再來試試這種情況:
代碼如下:
>>>list_1 = [1,2,3,4]
>>>list_2 = list_1
>>>list_2
>>>list_1[0] = 'python'
>>>list_2
result:
代碼如下:
[1,2,3,4]
['python',2,3,4]
從我的理解上來解釋的話: list是一個類型對象,而對象里的每一個元素可以看成是變量,去引用了不同內存空間的對象list_1 = [1,2,3,4]是讓list_1指向list的內存空間,list_2 = list_1時,他們將指向同一個內存空間。當List_1[0]改變指向時,list_2依然指向list對象的,所以看是改變list_1[0]的值,實際上是python通過list_1直接到內存空間去做了修改,list_2的指向沒有任何變量。
或許這種結果并不是我們想要的。如果你不想要這樣的現象發生,需要python對象拷貝,而不是創建引用。
如:
新聞熱點
疑難解答