一、is和==的区别
id():在内存中存储的位置
type():变量的类型
value:变量的值
**is和==的区别:**
is:type,value,id #判断类型,值,id
==:type,value #只判断类型和值
实验:
二、深浅拷贝
***当深拷贝和浅拷贝,针对的对象是不可变数据类型时,两者效果相同
***当深拷贝和浅拷贝,针对的对象是可变数据类型时,两者才有区别。
如果copy.copy()拷备的是元组,它不会进行浅拷备,仅仅是一个指向
因为元组是不可变数类型,那么就意味着数据一定不能修改,因此copy.copy()
的时候,它会自动判断是指向
如果copy.copy() copy.deepcopy()对一个全部是不可变数据类型
的数据进行数据拷备的时候哦,那么它们的结果都是相同的
面试常问:
请简述赋值, 深拷贝和浅拷贝的区别?(python中如何拷贝一个对象?)
1.直接赋值(list11 = list),只传递对象的引用,list11指向list的内存地址。因此当list内容发生改变时,list11也发生改变。
2.浅拷贝(list555=copy.copy(list)):list555和list内存地址空间不一样。但是,子对象的内存地址空间相同。因此,原始数据发生改变时,list55中子对象也改变。
3.深拷贝(import copy list888=copy.deepcopy(list) ):list888和list的内存地址空间不同,也包括子对象的拷贝,所以原始数据发生改变时list888中子对象不会发生改变。
注:所有数据类型和布尔类型,str是不可变数据类型
list是可变数据类型
实验1:全部不可变类型
实验2:存在可变类型(元组里套列表)
实验3:全部可变类型