1、Python数据存储
Python中一切皆对象。Python中构造的任何数据类型都是一个对象,不管是数字、字符串、字典等常见的数据结构,还是函数,甚至我们导入的模块等,Python都会把它当做是一个对象来处理。
Python对象拥有三个属性:
- 身份
- 类型
- 值
对象在内存中的地址表明他的身份,通过id方法查看;类型表示对象可以存储什么类型;值就是具体变量的值。
对于整数而言,如aa=1234,存储方式如下:
对于字符串,如a='1234',存储方式如下:
2、深拷贝和浅拷贝概念理解
(1)浅拷贝
只拷贝原数据的首地址,然后通过原数据的首地址去获取内容
(2)深拷贝
开辟一块新内存,将被拷贝内容全部拷贝过来。
(3)优缺点对比
深拷贝:拷贝成都高,将原数据复制到新的内存空间中。改变拷贝后的内容不影响原数据内容。但是深拷贝耗时长,且占用内存空间。
浅拷贝:拷贝程度低,只复制原数据的地址,其实是将副本的地址指向原数据地址。修改副本内容,是通过当前地址指向原数据地址去修改,所以修改副本内容会影响原数据内容。浅拷贝耗时短,占用内存空间少。
也就是说,
浅copy只会把第一级内存进行copy,如果原数据第一级所存储的ID发生变化,那么不会影响浅copy的值,如果元数据第一级之后的内存发生变化,那么就会影响的浅copy的值
而深copy是,将对象的每一级存储进行了复制,所以原数据的无论怎么变化都不会影响深copy 的值