1a = [11,22,33]#创造了一个实体[11,22,33],此时a指向这个实体,a可以
2#叫做源对象
3b = a #b也指向实体[11,22,33],b就叫做拷贝对象
4#!!!浅拷贝源对象与拷贝对象共用一份实体,仅仅时引用的变量的不同
5id(a)#输出为2310978997768
6id(b)#输出为2310978997768,浅拷贝的id号一样
7
8
9
10import copy
11c = copy.deepcopy(a)
12id(c)#输出为2310989166984,与a 的id号不一样
13a.append(44)
14a #输出为[11, 22, 33, 44]
15b #[11, 22, 33, 44] 表明深拷贝时拷贝对象和源对象彼此独立
16c #[11, 22, 33]
17#深拷贝时拷贝对象和源对象彼此独立,任何一个对象的改动对另一个不会造成影响
copy.deecopy()
1import copy
2c = [1,2,3,4]
3f = [5,6,7]
4t1 = [c,f]
5g = copy.deepcopy(t1)
6f.append(10)
7f #输出为[5, 6, 7, 10]
8g[1] #输出为[5, 6, 7]这二行可以看出当深拷贝一个对象时,若此对象里面还有
9 #引用时,都会依次进行深拷贝
copy.copy()
1t1 = [c,f]
2t2 = (c,f)
3m1 = copy.copy(t1)
4m2 = copy.copy(t2)
5id(t1) #输出为2783225450120
6id(m1) #输出为2783225170312
7id(m2) #输出为2783223573000
8id(t2) #输出为2783223573000
9
10#因此可以看出当copy.copy的对象可变时会进行拷贝,若该对象里面还有引用时直接指向就行,而不再进行拷贝,
11#若拷贝的对象不可变时,直接指向该对象,而不再拷贝