相同的数据在内存空间中仅占用一个存储空间,不一样的变量使用相同的数据则指向相同的存储空间。python
语法格式:函数
id(数据)
id(变量名)
复制代码
使用固定内存地址存储数据以下:spa
列表保存在临时引用地址中,该引用地址能够反复使用code
列表保存在独立引用地址中,该引用地址专用,每一个列表对象具备独立的引用地址cdn
1.列表变量指向引用地址,该引用地址中保存有存储列表信息的内存地址。对象
2.当列表中存储市局的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。blog
3.从新申请的内存地址将复制原始内存地址中的数据。索引
1.列表中存储的数据都是数据对应的内存地址,没有真实数据内存
2.列表中的数据是经过引用地址的形式查找真实数据字符串
空元组指向统一的独立引用地址,全部空元组共用同一个引用地址
非空元组保存在独立引用地址中,每一个元组对象具备独立引用地址
注:因为元组不支持修改,不存在从新申请空间的问题,元组建立的同时存储的数据已经固定,内存结构也固定。
1.元组中存储的数据都是数据对应的内存地址,没有真实数据
2.元组中的数据是经过引用地址的形式查找真实数据
注:元组不支持修改,可是元组中的数据若是是引用类型的,对应的数据能够在自身的内存地址中进行数据变动,对元组不影响。
集合保存在临时引用地址中,该引用地址能够反复使用
集合保存在独立引用地址中,该引用地址专用,每一个列表对象具备独立的引用地址
1.集合变量指向引用地址,该引用地址中保存有存储集合信息的内存地址。
2.当集合中存储数据的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。
3.从新申请的内存地址将复制原始内存地址中的数据。
1.集合中存储的数据都是数据对应的内存地址,没有真实数据
2.集合中的数据是经过引用地址的形式查找真实数据
字典保存在临时引用地址中,该引用地址能够反复使用
字典保存在独立引用地址中,该引用地址专用,每一个字典对象具备独立的引用地址
1.字典变量指向引用地址,该引用地址中保存有存储字典信息的内存地址。
2.当字典中存储数据的空间不足时,会申请新的内存地址,并更新引用地址中对应的内存地址。
3.从新申请的内存地址将复制原始内存地址中的数据。
5.3 字典中的数据存储 1.字典中存储的数据都是数据对应的内存地址,没有真实数据
2.字典中的数据是经过引用地址的形式查找真实数据
对象保存在临时引用地址中,该引用地址能够反复使用
对象保存在独立引用地址中,该引用地址专用,每一个列表对象具备独立的引用地址
1.对象中的变量存储的都是对应数据的引用地址,没有真实数据 2.对象中的变量是经过引用地址的形式查找真实数据 3.对象中的变量存储形式是一个字典的形式,对变量的操做参照字典的操做方式,变量名为字典的key,变量值为字典的value
数据存储空间中的数据能够发生变化的数据称为可变类型数据
数据存储空间中的数据不能发生变化的数据称为不可变类型数据
可变类型数据
不可变类型数据
条件1:函数形参使用默认参数
条件2:函数调用时未对默认参数传值
条件3:函数的形参使用可变类型数据
上述3个条件同时知足时,屡次调用对应函数时,操做的形参是同一个对象
__new__方法用于定义建立对象时执行的操做,__new__方法仅仅为用户提供一个建立对象时干预的入口,真正执行建立对象的操做由object类中的__new__方法完成。
定义__new__方法是对object类中__new__方法的重写,重写该方法时必须再次调用object类中的__new__方法。
__new__方法在建立对象时自动运行,无需手工执行调用该方法。
del操做的实质是断开变量与内存数据之间的引用,操做del执行后等同于对应变量未进行过定义。
1.删除定义的变量:功能等同于变量未定义
__del__方法用于定义对象不存在任何引用时执行的操做。当对象断开了与最后一个变量之间的引用关系时,将执行该对象的__new__方法。
1.当手工执行断开变量与对象的最后一个引用时执行,即del操做
2.当程序执行完毕时,全部变量对应的引用都断开,此时执行,即退出程序
__del__方法在对象断开与最后一个变量之间的引用关系时自动执行,无需手工执行调用该方法。
当两个对象对应的引用地址相同时,称这两个对象是同一个对象。
对象引用地址判等:
对象名 is 对象名 或 变量名 is 变量名
复制代码
数据引用地址断定:
数据 is 数据
复制代码
注:判等操做的结果是True或False
控制一个类只能建立出单个实例对象。
class 类名:
__instance = None
def __new__(cls,*args,**kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(类名)
return cls.__instance
复制代码
1.定义的类变量要进行私有化,负责能够经过类名在类的外部访问到
2.对象的判空惭怍使用is进行断定