copy deepcopy 淺複製 深複製

2021-09-29 07:50:00 字數 1055 閱讀 1386

什麼是id?乙個物件的id值在cpython直譯器裡就代表它在記憶體中的`位址

# -*- coding:utf-8 -*-

import copy

a=[1,2,3,[4,5],[6,7,8]]

b = a

a[3][0]=4444

print(a,b)

『『』』

([1, 2, 3, [4444, 5], [6, 7, 8]], [1, 2, 3, [4444, 5], [6, 7, 8]])

『『』』

當使用淺拷貝時,python只是拷貝了最外圍的物件本身,內部的元素都只是拷貝了乙個引用而已。看**:

# -*- coding:utf-8 -*-

import copy

a=[1,2,3,[4,5],[6,7,8]]

c=copy.copy(a)

a[0]=1111

a[4][1]=7777

print(a,c)

''''

([1111, 2, 3, [4, 5], [6, 7777, 8]], [1, 2, 3, [4, 5], [6, 7777, 8]])

''''

deepcopy對外圍和內部元素都進行了拷貝物件本身,而不是物件的引用。

# -*- coding:utf-8 -*-

import copy

a=[1,2,3,[4,5],[6,7,8]]

d=copy.deepcopy(a)

a[0]= 1111

a[3][0]=4444

a[4][0]=6666

print(a,d)

''''

([1111, 2, 3, [4444, 5], [6666, 7, 8]], [1, 2, 3, [4, 5], [6, 7, 8]])

''''

淺複製 深複製

second,來說說shallow copy and deep copy的定義和我自己的一些理解。僅供參考 淺複製 shallow copy 如果欄位是值型別的。則對該字段執行逐位複製,如果欄位是引用型別,則複製引用但不複製引用的物件 因此,原始物件及其副本引用同一物件。即被複製物件的所有變數都含有...

深複製 淺複製

深複製又叫深拷貝 淺複製又叫淺拷貝 位拷貝。為了理解什麼叫深複製和淺複製,我們舉乙個例子,假如我們有乙個類叫cdemo,有兩個成員,a 和 str.class cdemo 我們再定義乙個建構函式 cdemo int pa,char cstr 然後執行 cdemo a 10,hello cdemo b...

深複製淺複製

淺複製 所謂的淺拷貝就是拷貝指向物件的指標,意思就是說 拷貝出來的目標物件的指標和源物件的指標指向的記憶體空間是同一塊空間.淺拷貝只是一種簡單的拷貝,讓幾個物件公用乙個記憶體,然而當記憶體銷毀的時候,指向這個記憶體空間的所有指標需要重新定義,不然會造成野指標錯誤 深複製所謂的深拷貝指拷貝物件的具體內...