Python可变与不可变类型及垃圾回收机制

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

回到顶部