Python参考计数
示例
绝大多数Python内存管理都是通过引用计数来处理的。
每次引用对象(例如,分配给变量)时,其引用计数都会自动增加。取消引用后(例如,变量超出范围),其引用计数将自动减少。
当引用计数达到零时,对象将立即被销毁并立即释放内存。因此,在大多数情况下,甚至不需要垃圾收集器。
>>> import gc; gc.disable() #禁用垃圾收集器 >>> class Track: def __init__(self): print("Initialized") def __del__(self): print("Destructed") >>> def foo(): Track() #立即销毁,因为不再有任何参考 print("---") t = Track() #变量已被引用,因此尚未销毁 print("---") #函数退出时销毁变量 >>> foo() Initialized Destructed --- Initialized --- Destructed
为了进一步说明引用的概念:
>>> def bar(): return Track() >>> t = bar() Initialized >>> another_t = t #分配另一个参考 >>> print("...") ... >>> t = None #尚未销毁-another_t仍引用它 >>> another_t = None #最终引用不见了,对象被破坏了 Destructed