对python中浅拷贝和深拷贝分析详细介绍
生活随笔
收集整理的這篇文章主要介紹了
对python中浅拷贝和深拷贝分析详细介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,我們知道Python3中,有6個標準的數據類型,他們又分為可以變和不可變。
- 不可變:Number(數字)、String(字符串)、Tuple(元組)。
- 可以變:List(列表)、Dictionary(字典)、Set(集合)。
一.淺拷貝
a 和 b 是一個獨立的對象,但他們的子對象還是指向統一對象(是引用)
淺拷貝后,改變原始對象中為可變類型的元素的值,會同時影響拷貝對象;改變原始對象中為不可變類型的元素的值,不會響拷貝對象。
二.深拷貝
a 和 b 完全拷貝了父對象及其子對象,兩者是完全獨立的。
深拷貝,除了頂層拷貝,還對子元素也進行了拷貝。
經過深拷貝后,原始對象和拷貝對象所有的可變元素地址都沒有相同的了。
在這里看到一個讓我困惑的問題,A is B
三.賦值引用
a 和 b 都指向同一個對象
''' 學習中遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' #賦值引用 >>> A = [[1,2],'fei',90] >>> D = A #對象地址是否相同 >>> A is D True #第一個元素地址是否相同 >>> A[0] is D[0] True #第二個元素地址是否相同 >>> A[1] is D[1] True #改變A中第一個元素,查看是否影響D >>> A[0][0] = 2 >>> A [[2, 2], 'fei', 90] #D中第一個元素也跟著改變 >>> D [[2, 2], 'fei', 90] #改變D中第二個元素,查看是否影響A >>> D[1] = 'anne' #A中第二個元素也改變了 >>> A [[2, 2], 'anne', 90] >>> D [[2, 2], 'anne', 90] >>>總結
以上是生活随笔為你收集整理的对python中浅拷贝和深拷贝分析详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础教程:type()函数-
- 下一篇: Python零基础教程:函数和类内建魔法