Python中的引用和拷貝實例解析

發布時間: 2019-11-14 13:35:05 來源: 互聯網 欄目: python 點擊:

這篇文章主要介紹了python中的引用和拷貝實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了python中的引用和拷貝實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一.引用

a = ['a', 'b', 'c']
b = a
print(id(a))
print(id(b))
135300560
135300560

可以看到,變量a 和 b 的 id是完全一樣的,這就說明a和b是同時指向內存的同一個區域的,即b隨a的變化而變化.

a = ['a', 'b', 'c']
b = a
a[1] = 'd'
print(b)
b[2] = 'e'
print(a)

['a', 'd', 'c']
['a', 'd', 'e']

二.淺拷貝  

淺拷貝只是復制了的父對象,即復制后的變量和復制前的子對象還是指向同一個對象

淺拷貝可以寫為 copy.copy(obj) 或者 obj.copy()

import copy
a = ['a', 'b', ['c', 'd', 'e']]
b = copy.copy(a)
a.append('e')
print(b)
a[0] = 'g'
print(b)
a[2].append('f')
print(b)
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e', 'f']]

畫個圖來理解就是如下:

當只有a元素的子元素里的元素有變化時,b才會引起改變

三.深拷貝

深拷貝就比較好理解了,它相當于開辟了一個新空間是新指針指向新的空間,無論原對象怎么變化,新對象都不變

import copy
a = ['a', 'b', ['c', 'd', 'e']]
b = copy.deepcopy(a)
a.append('e')
print(b)
a[0] = 'g'
print(b)
a[2].append('f')
print(b)
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]
['a', 'b', ['c', 'd', 'e']]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

本文標題: Python中的引用和拷貝實例解析
本文地址: http://www.leskzw.tw/jiaoben/python/286355.html

如果認為本文對您有所幫助請贊助本站

支付寶掃一掃贊助微信掃一掃贊助

  • 支付寶掃一掃贊助
  • 微信掃一掃贊助
  • 支付寶先領紅包再贊助
    聲明:凡注明"本站原創"的所有文字圖片等資料,版權均屬編程客棧所有,歡迎轉載,但務請注明出處。
    通過python掃描二維碼/條形碼并打印數據python matplotlib如何給圖中的點加標簽
    Top 广东好彩1中奖规则