python共享引用(多個變量引用)示例代碼
a = 3
b = a
先上圖(圖1)吧,大家一看就一目了然了:
變量名和對象,在運行賦值語句b = a之后,變量a,b都指向了對象3的內(nèi)存空間.
假設(shè)這時執(zhí)行 a = 'python', a將指向剛創(chuàng)建的字符串對象。
我們再來試試這種情況:
>>>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是一個類型對象,而對象里的每一個元素可以看成是變量,去引用了不同內(nèi)存空間的對象list_1 = [1,2,3,4]是讓list_1指向list的內(nèi)存空間,list_2 = list_1時,他們將指向同一個內(nèi)存空間。當(dāng)List_1[0]改變指向時,list_2依然指向list對象的,所以看是改變list_1[0]的值,實際上是python通過list_1直接到內(nèi)存空間去做了修改,list_2的指向沒有任何變量。
或許這種結(jié)果并不是我們想要的。如果你不想要這樣的現(xiàn)象發(fā)生,需要python對象拷貝,而不是創(chuàng)建引用。
如:
- python全局變量引用與修改過程解析
- Python中is與==的使用區(qū)別詳解
- python游戲?qū)崙?zhàn)項目之童年經(jīng)典超級瑪麗
- python游戲?qū)崙?zhàn)項目之俄羅斯方塊的魅力
- python游戲的魅力之冒險島實戰(zhàn)項目
- Python 多繼承中的一個詭異現(xiàn)象 既是 Father又是grandfather
- python 如何將字典寫為json文件
- 童年回憶錄之python版4399吃豆豆小游戲
- Python中優(yōu)雅使用assert斷言的方法實例
- python 基于 tkinter 做個學(xué)生版的計算器
- 聊聊Python中的@符號是什么意思
- 關(guān)于python變量的引用以及在底層存儲原理
相關(guān)文章
Python實現(xiàn)利用最大公約數(shù)求三個正整數(shù)的最小公倍數(shù)示例
這篇文章主要介紹了Python實現(xiàn)利用最大公約數(shù)求三個正整數(shù)的最小公倍數(shù),涉及Python數(shù)學(xué)運算相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的方法分享
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)從網(wǎng)絡(luò)攝像頭拉流的幾種方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下2023-01-01
Python OpenCV實現(xiàn)鼠標(biāo)畫框效果
這篇文章主要為大家詳細(xì)介紹了Python OpenCV實現(xiàn)鼠標(biāo)畫框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08

