什么是深浅拷贝
- 浅拷贝: 不管多么复杂的数据结构,浅拷贝都只会copy一层
- 深拷贝: 深拷贝会完全复制原变量相关的所有数据,在内存中生成一套完全一样的内容,我们对这两个变量中任意一个修改都不会影响其他变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/682d8752e80118b9e73a81c648b89526.png#pic_center)
- 例:
import copy
a = [1,2,3,4,['a','b']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('c')
print(a)
print(b)
print(c)
print(d)
变量及其存储
- python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身
- 不管多么复杂的数据结构,浅拷贝都只会copy一层。
理解
:两个人公用一张桌子,只要桌子不变,桌子上的菜发生了变化两个人是共同感受的。
>>> str1 = 'hello'
>>> str2 = str1
>>> id(str1)
22748280
>>> id(str1)
22748280
>>>
>>> str1 = 'new hello'
>>> id(str1)
22748320
>>> id(str2)
22748280
>>> sourceList = [1,2,[3,4]]
>>> newList = sourceList
>>> l[2][0]=100
>>> sourceList
[1, 2, [100, 4]]
>>> newList
[1, 2, [100, 4]]
is 和 == 区别
- is不仅数据一样内存地址也一样
- == 只判断数据和数据类型一样即可