代碼如下:
a = 3
b = a
先上圖(圖1)吧,大家一看就一目了然了:
變量名和對(duì)象,在運(yùn)行賦值語(yǔ)句b = a之后,變量a,b都指向了對(duì)象3的內(nèi)存空間.
假設(shè)這時(shí)執(zhí)行 a = 'python', a將指向剛創(chuàng)建的字符串對(duì)象。
我們?cè)賮?lái)試試這種情況:
代碼如下:
>>>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]
從我的理解上來(lái)解釋的話(huà): list是一個(gè)類(lèi)型對(duì)象,而對(duì)象里的每一個(gè)元素可以看成是變量,去引用了不同內(nèi)存空間的對(duì)象list_1 = [1,2,3,4]是讓list_1指向list的內(nèi)存空間,list_2 = list_1時(shí),他們將指向同一個(gè)內(nèi)存空間。當(dāng)List_1[0]改變指向時(shí),list_2依然指向list對(duì)象的,所以看是改變list_1[0]的值,實(shí)際上是python通過(guò)list_1直接到內(nèi)存空間去做了修改,list_2的指向沒(méi)有任何變量。
或許這種結(jié)果并不是我們想要的。如果你不想要這樣的現(xiàn)象發(fā)生,需要python對(duì)象拷貝,而不是創(chuàng)建引用。
如:
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注