В чем разница между слабыми и сильными ссылками в Python

Python Middle Без компании
В чем разница между слабыми и сильными ссылками в Python
Ответы
В Python сильные ссылки (strong references) — это обычные ссылки, которые увеличивают счётчик ссылок объекта и предотвращают его удаление сборщиком мусора. Слабые ссылки (weak references) не увеличивают счётчик ссылок, позволяя объекту быть удалённым, если на него нет других ссылок. Пример: ``` import weakref class MyClass: pass obj = MyClass() # сильная ссылка weak_obj = weakref.ref(obj) # слабая ссылка print(weak_obj()) # <__main__.MyClass object at ...> del obj print(weak_obj()) # None, объект удалён ``` Ключевые отличия: - Слабые ссылки не препятствуют сборке мусора - Используются для кэшей, обработчиков событий, когда не нужно удерживать объект в памяти - Доступ через вызов weakref (weak_obj()) - Модуль weakref также предоставляет WeakValueDictionary, WeakSet и др. Слабые ссылки полезны для реализации паттернов без утечек памяти.