当一个变量=xxx的时候,约定为:指向地址的过程
浅拷贝:copy.copy()
深拷贝:copy.deepcopy()
>>> a=[11,22]
>>> b=[33,44]
>>> c=[a,b]
>>> c
[[11, 22], [33, 44]]
>>> d=copy.copy(c)
>>> d
[[11, 22], [33, 44]]
>>> id(c)
140050830023280
>>> id(d)
140050830095712
>>> id(c[0])
140050830023064
>>> id(d[0])
140050830023064
>>> e=copy.deepcopy(c)
>>> id(e)
140050830095280
>>> id(c[1])
140050830022992
>>> id(e[1])
140050830070704
>>>
如果copy.copy()拷贝的是元组(是不可变数据类型),那么它不会进行浅拷贝
仅仅是指向 因为元组是不可变数据类型 那么意味着数据一定不能修改 因此用copy.copy()
的时候,它会自动判断是指向
如果,用copy.copy() copy.deepcopy()对一个全部是不可变数据类型的数据进行
数据拷贝,那么它的结果是相同的 都是引用
如果拷贝的是一个拥有可变类型的数据,那么deepcopy依然是深拷贝,而copy.copy()
还是指向
is和==有何区别
id():在内存中存储的位置
type:变量的类型
value:变量的值
==:type value
is:type value id
4 5
结论:
is 表示两个变量的值是否是同一块内存空间
== 表示的是值是否相等
总结:
is返回的值是True ==返回的一定是True