Python可变与不可变类型及垃圾回收机制
1. 可变与不可变类型
1.1 可变类型
在id不变的情况下,value可以改变,则称之为可变类型。列表、字典与集合是可变的。
l1 = [1,2,3,4,5]print(id(l1))
l1[1] = 520 #改变列表元素
print(id(l1))
result:
1700748379208 #id不变
1700748379208
info = {'name':'言念君子'}
print(id(info))
info['name']='温润如玉'
print(id(info))
result:
1953426847424
1953426847424
s1 = {'a','b','c','d'}
print(id(s1))
s1.add('zxj')
print(id(s1))
result:
2428508547336
2428508547336
1.2 不可变类型
value一旦改变,id也改变(id改变意味着创建了新的内存)。整数、浮点数、字符串、元组是不可变类型。
l1 = ['a','c']tu = (1,2,3,l1)
print(tu , id(tu))
l1[1]='zxj'
print(tu,id(tu))
result:
(1, 2, 3, ['a', 'c']) 1921112815480
(1, 2, 3, ['a', 'zxj']) 1921112815480
2. 引用计数
引用计数即对一个变量值的引用次数,如:
a = 10
b = 10
变量10被引用了2次。
3. 垃圾回收机制
定义变量并不会占用内存,只有在运行变量类型的时候才占用内存,运行完毕后需要释放内存,解除占用。Python存在一种机制会回收这种占用的内存,即垃圾回收机制。垃圾回收机制在一下两种情况下会回收内存:
1>程序执行完毕后id被回收;
2>引用计数为0后id被回收。
以上是 Python可变与不可变类型及垃圾回收机制 的全部内容, 来源链接: utcz.com/z/388031.html