标签:lock pen code 新建 数组 内存地址 对象数组 创建 元组
a = 1
首先在内存中创建对象1,并记录对象的引用计数为1次。
id(a)
查看变量a引用的对象的内存地址
b = 1
内存中已存在对象1,变量b引用对象1,则对象1的引用计数为2次。
id(b)
变量b和变量a引用的是同一个对象,内存地址相同。
a = a + 1
在内存中创建对象2,变量a不再引用原有对象1(引用次数减为1),开始引用对象2(引用次数增为1)
a = 1
重新执行a=1,a依然指向原有对象(因为还是1)
注意:仅对短字符有效,长字符串每次new对象,即便相同,也会重新建立内存; 这里目前没有查到相关资料,但确实如此。
a = []
在内存中创建数组对象,记录对象引用次数为1次(被a引用)
b = []
在内存中重新创建新对象,记录对象引用次数为1次(被b引用),a和b所在内存地址不相同
a.append(1)
a依然指向原有的内存地址,因为是可变对象,所以不需要在内存中重建新对象
a = []
重新在内存创建可变对象[],a不再指向原有对象(引用次数变为0,被回收)
标签:lock pen code 新建 数组 内存地址 对象数组 创建 元组
原文地址:https://www.cnblogs.com/jiukun/p/9325468.html