python垃圾回收问题

关于python垃圾回收机制,引用计数,我知道当引用计数为0的时候,会被回收。
当我定义一个变量a = 88, 这个对象当我定义的时候引用计数就是 1 了

a变量的引用计数是怎么变成0然后被回收的?

引用计数变成0的方式有很多, 如代码del aa变量删除, 引用计数变成0。
另一种是, 如果在函数中定义了变量a, 那么函数返回后, 变量a的引用计数变成0。

当该对象的别名被显式销毁时  del a
当该对象的引别名被赋予新的对象,   a=26
一个对象离开它的作用域,例如 func函数执行完毕时,函数里面的局部变量的引用计数器就会减一(但是全局变量不会)
将该元素从容器中删除时,或者容器被销毁时。
参考 https://blog.csdn.net/m0_51691302/article/details/123117569

python垃圾回收机制_HiSiri~的博客-CSDN博客_python垃圾回收机制 看看这篇博客吧

  • Python语言默认采用的垃圾回收机制 是 引用计数法(Reference Counting)
  • 引用计数法原理是:每个对象维护一个ob_ref字段,用来记录该对象被引用的次数吗,每当新的引用指向该对象时,它的引用计数ob_ref1,每当该对象引用失效时ob_ref1,一旦该对象的引用计数为0,该对象立即被回收,对象占用的内存空间将被释放。

导致引用次数 +1的情况:

  • 对象被创建,例如 a = 23
  • 对象被引用,例如 b = a
  • 对象被作为参数,传入到一个函数中,例如 fun(a)
  • 对象被作为一个元素,存储在容器中,例如list1=[a, a]

导致引用计数-1的情况

  • 对象的别名被显式销毁,例如 del a
  • 对象的别名被赋予新的对象,例如 a = 24
  • 一个对象离开它的作用域,例如 f 的函数执行完毕时,func函数中的局部变量(全局变量不会)
  • 对象所在的容器被销毁,或从容器中删除对象

如果进一步感兴趣的话,可以看我的博客 https://blog.csdn.net/weixin_43662553/article/details/125294885