Встречается на собеседованиях • сегодня

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

В Python сильные ссылки (strong references) — это обычные ссылки, которые увеличивают счётчик ссылок объекта и предотвращают его удаление сборщиком мусора. Слабые ссылки (weak references) не увеличивают счётчик ссылок, позволяя объекту быть удалённым, если на него нет других ссылок.

Пример:

python
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, объект удалён

Ключевые отличия:

  1. Слабые ссылки не препятствуют сборке мусора
  2. Используются для кэшей, обработчиков событий, когда не нужно удерживать объект в памяти
  3. Доступ через вызов weakref (weak_obj())
  4. Модуль weakref также предоставляет WeakValueDictionary, WeakSet и др.

Слабые ссылки полезны для реализации паттернов без утечек памяти.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы