Python中的引用和拷貝實(shí)例解析
這篇文章主要介紹了python中的引用和拷貝實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
一.引用
a = ['a', 'b', 'c'] b = a print(id(a)) print(id(b)) 135300560 135300560
可以看到,變量a 和 b 的 id是完全一樣的,這就說明a和b是同時(shí)指向內(nèi)存的同一個(gè)區(qū)域的,即b隨a的變化而變化.
a = ['a', 'b', 'c'] b = a a[1] = 'd' print(b) b[2] = 'e' print(a) ['a', 'd', 'c'] ['a', 'd', 'e']
二.淺拷貝
淺拷貝只是復(fù)制了的父對象,即復(fù)制后的變量和復(fù)制前的子對象還是指向同一個(gè)對象
淺拷貝可以寫為 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']]
畫個(gè)圖來理解就是如下:
當(dāng)只有a元素的子元素里的元素有變化時(shí),b才會(huì)引起改變
三.深拷貝
深拷貝就比較好理解了,它相當(dāng)于開辟了一個(gè)新空間是新指針指向新的空間,無論原對象怎么變化,新對象都不變
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']]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)Word文檔樣式批量處理
這篇文章主要為大家詳細(xì)介紹了如何利用Python中的python-docx非標(biāo)準(zhǔn)庫實(shí)現(xiàn)word文檔樣式批量處理,文中示例代碼講解詳細(xì),感興趣的可以了解一下2022-05-05五分鐘學(xué)會(huì)怎么用python做一個(gè)簡單的貪吃蛇
這篇文章主要介紹了五分鐘學(xué)會(huì)怎么用python做一個(gè)簡單的貪吃蛇,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01Python光學(xué)仿真之對光的干涉理解學(xué)習(xí)
這篇文章主要為大家介紹了Python光學(xué)仿真之對光的干涉理解學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-10-10Python的collections模塊中namedtuple結(jié)構(gòu)使用示例
namedtuple顧名思義,就是名字+元組的數(shù)據(jù)結(jié)構(gòu),下面就來看一下Python的collections模塊中namedtuple結(jié)構(gòu)使用示例2016-07-07python循環(huán)某一特定列的所有行數(shù)據(jù)(方法示例)
在Python中,處理表格數(shù)據(jù)(比如CSV文件、Excel文件等)時(shí),我們通常會(huì)使用pandas庫,因?yàn)樗峁┝素S富的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,下面,我將以處理CSV文件中的某一特定列的所有行數(shù)據(jù)為例,給出詳細(xì)、完整的代碼示例,感興趣的朋友跟隨小編一起看看吧2024-08-08