直接赋值:浅拷贝和深度拷贝

2021-01-31  本文已影响0人  闲云野鹤_23dd

直接赋值:浅拷贝和深度拷贝

直接赋值

就是对象的引用(别名)

例子:
可以看到,对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)`
上一篇下一篇

猜你喜欢

热点阅读