所有的对象都有引用计数。给一个对象分配一个新名称,或是将其放入一个容器(如列表、元组或字典),都会增加该对象的引用计数。
例如:
a=37 #创建一个值为37的对象
b=a #增加37的引用计数
c=[]
c.append(b) #增加37的引用计数
这个例子创建了一个包含值为37的对象,a只是引用了这个新创建的对象的一个名称。将a赋值给b时,b就成了同一对象的新名称,该对象的引用计数因此增加。类似地,将b放到一个列表种,该对象的引用计数将再次增加。在这个例子中,至始至终只有一个37对象,其它所哟地操作都是创建了该对象的新引用。
使用del语句、引用超出作用域、重新赋值,对象的引用计数都会减少,例如:
del a #减少37的引用计数
b=42 #减少37的引用计数
c[0]=43 #减少37的引用计数