移动端网站开发的书,政法网站内容建设,小视频app,企业网站建设方案及报价一 浅拷贝与深拷贝
1. 浅拷贝
浅拷贝只复制了对象本身#xff08;即c中的引用#xff09;。
2. 深拷贝
深拷贝创建一个新的对象#xff0c;同时也会创建所有子对象的副本#xff0c;因此新对象与原对象之间完全独立。
二 代码理解
1. 案例一
a 10
b a
b 20
print…一 浅拷贝与深拷贝
1. 浅拷贝
浅拷贝只复制了对象本身即c中的引用。
2. 深拷贝
深拷贝创建一个新的对象同时也会创建所有子对象的副本因此新对象与原对象之间完全独立。
二 代码理解
1. 案例一
a 10
b a
b 20
print(a)
10通过案例可以看出a并没有改变值因为a是数字不可改变的这里ba并不是引用所以不能改变。
2. 案例二
a [1, 25, 60, 87, 100]
b a
b[2] 2
print(a)
[1, 25, 2, 87, 100]通过案例可以看出a的值发生改变了因为a是list是可以改变的所以ba是引用所以发生了改变。
3. 案例三
import copy
a [1, 25, 60, 87, 100]
b copy.deepcopy(a)
b[2] 2
print(a : , a)
print(b : , b)a : [1, 25, 60, 87, 100]
b : [1, 25, 2, 87, 100]通过案例可以看出a并没有改变值因为我使用了深拷贝所以不发生改变。
4. 案例四
import numpy as np
a np.array([1, 2, 3, 4])
b a
b[1] 0
print(a)
[1 0 3 4]通过案例可以看出a的值发生改变了因为a是np是可以改变的所以ba是引用所以发生了改变。
5. 案例五
import numpy as np
a np.array([1, 2, 3, 4])
b a.copy()
b[1] 0
print(a : , a)
print(b : , b)
a : [1 2 3 4]
b : [1 0 3 4]通过案例可以看出a并没有改变值因为我使用了深拷贝所以不发生改变。
三 总结
我们通过案例发现只要是python可变的变量如果使用号赋值就是引用不可变的就不是引用。当使用可变数据时候需要深拷贝才能解决问题。
不可变数据3个Number数字、String字符串、Tuple元组。
可变数据3个List列表、Dictionary字典、Set集合
np也是可变数据但是使用深拷贝是copy方法即可千万要注意等号的赋值含义千万要注意等号的赋值含义千万要注意等号的赋值含义