python 深浅拷贝 属性获取,垃圾回收

说下对python深浅拷贝的理解。并有代码简单实现

浅拷贝:浅拷贝是对于一个对象的顶层拷贝,拷贝了引用,并没有拷贝内容

深拷贝:深拷贝是对于一个对象所有层次的拷贝(递归)

只有一层深浅拷贝没区别:都是

1、如果是可变,地址不同

2、如果是不可变,地址相同

python 深浅拷贝 属性获取,垃圾回收_第1张图片

多层

深拷贝:

copy.deepcopy

1、如果所有层都是不可变的,所有层地址相同

2、如果有一个可变的,外层一定不同

3、如果内层中这一层是可变的,地址不同。否则,地址相同

浅拷贝:

copy.copy

内层地址一样

外层地址:

1、如果是可变,地址不同

2、如果是不可变,地址相同

python 深浅拷贝 属性获取,垃圾回收_第2张图片

__call__

python 深浅拷贝 属性获取,垃圾回收_第3张图片

垃圾回收

python 深浅拷贝 属性获取,垃圾回收_第4张图片
python 深浅拷贝 属性获取,垃圾回收_第5张图片


python 深浅拷贝 属性获取,垃圾回收_第6张图片


python 深浅拷贝 属性获取,垃圾回收_第7张图片


动态语言


python 深浅拷贝 属性获取,垃圾回收_第8张图片



python 深浅拷贝 属性获取,垃圾回收_第9张图片


python 深浅拷贝 属性获取,垃圾回收_第10张图片


你可能感兴趣的:(python 深浅拷贝 属性获取,垃圾回收)