直接赋值:浅拷贝和深度拷贝
直接赋值
就是对象的引用(别名)
例子:
可以看到,对b 赋值了 a 的值, 但是修改b的值,a的值也会发生变化
因为 赋值 其实就是引用对象的内存地址,并不是重新开辟新的内存空间进行存储,所以a的值 也发生变化
a = {1: [1,2,3]}
b = a
b[2]='1'
print(a)
print(b)
输出结果:
{1: [1, 2, 3], 2: '1'}
{1: [1, 2, 3], 2: '1'}
## 浅拷贝
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
例子:
使用 a.copy()赋值,叫做浅拷贝, 对a的键值对操作不会同步,但是a的子对象,就是a[0]的值 还是引用的同一个内存地址
a = {1: [1,2,3]}
c = a.copy()
c[2]='1'
print(a)
print(c)
print('-----')
a[1].append(4)
print(a)
print(c)`
输出结果:
{1: [1, 2, 3]}
{1: [1, 2, 3], 2: '1'}
-----
{1: [1, 2, 3, 4]}
{1: [1, 2, 3, 4], 2: '1'}
深拷贝
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
import copy
d = copy.deepcopy(a)
d[2]='1'
print(a)
print(d)
print('-----')
a[1].append(4)
print(a)
print(d)`
网友评论