python强弱引用简介

6 阅读1分钟

在 Python 中:

强引用(Strong Reference)

  • 定义:对象被变量直接引用时,就是强引用。
  • 特点:只要有强引用存在,对象就不会被垃圾回收。
  • 示例
    a = [1, 2, 3]  # a 是对列表对象的强引用
    b = a          # b 也是强引用
    

弱引用(Weak Reference)

  • 定义:弱引用不会增加对象的引用计数,对象可以被垃圾回收。
  • 用途:常用于缓存、观察者模式等场景,避免内存泄漏。
  • 实现:通过 weakref 标准库实现。
  • 示例
    import weakref
    
    class MyClass:
        pass
    
    obj = MyClass()
    w = weakref.ref(obj)  # 创建对 obj 的弱引用
    
    print(w())  # 输出 <__main__.MyClass object at ...>
    del obj
    print(w())  # 输出 None(对象已被回收)
    

总结

  • 强引用:对象只要有强引用就不会被回收。
  • 弱引用:对象没有强引用时会被回收,弱引用不会阻止回收。