【轉】python共用引用(多個變數引用)範例程式碼

來源:互聯網
上載者:User

標籤:http   ar   art   div   代碼   htm   .net   python   

python共用引用(多個變數引用)範例程式碼_python_指令碼之家
http://www.jb51.net/article/44109.htm

 

python單個(一個)對象被多個變數引用又是怎麼一回事兒呢?看下面代碼


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對象拷貝,而不是建立引用。 如:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.