标签:copy 浅拷贝 深拷贝 结果 分离 port strong class 会同
深浅拷贝:数据分离情况
1. =赋值:数据完全共享(指向内存中的同一个对象)
被赋值的变量指向的数据和原变量的数据都是指向内存中的同一个地址:
1 print("以下是赋值")
2 a=[1,2,"4",[4,5]]
3 b=a
4 print(a)
5 print(b)
6
7 b[0]=11
8 b[3][0]=44
9 print(a)
10 print(b)
11
12
13 #结果:
14 #以下是赋值
15 #[1, 2, ‘4‘, [4, 5]]
16 #[1, 2, ‘4‘, [4, 5]]
17 #[11, 2, ‘4‘, [44, 5]]
18 #[11, 2, ‘4‘, [44, 5]]
2. 浅copy:数据半共享(仅可变数据类型指向同一个对象)
复制其数据独立内存存放(新建一个地址指向),但是只拷贝成功第一层:
1 print("以下是浅拷贝")
2
3 a=[1,2,"4",[4,5]]
4 b=a.copy()
5 print(a)
6 print(b)
7
8 b[0]=11
9 b[3][0]=44
10 print(a)
11 print(b)
12
13 结果:
14 以下是浅拷贝
15 [1, 2, ‘4‘, [4, 5]]
16 [1, 2, ‘4‘, [4, 5]]
17 [1, 2, ‘4‘, [44, 5]]
18 [11, 2, ‘4‘, [44, 5]]
3. 深copy:数据完全不共享(数据独立,互不影响)
复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享:
import copy
print("以下是深拷贝")
a=[1,2,"4",[4,5]]
b=copy.deepcopy(a)
print(a)
print(b)
b[0]=11
b[3][0]=44
print(a)
print(b)
结果:
以下是深拷贝
[1, 2, ‘4‘, [4, 5]]
[1, 2, ‘4‘, [4, 5]]
[1, 2, ‘4‘, [4, 5]]
[11, 2, ‘4‘, [44, 5]]
标签:copy 浅拷贝 深拷贝 结果 分离 port strong class 会同
原文地址:https://www.cnblogs.com/open-yang/p/10852211.html