Что выведет код?
import itertools
lst = [[1, 2], [3]]
it = itertools.chain.from_iterable(lst)
print(next(it))
lst.append([4, 5])
print(list(it))
Иногда объект больше не нужен, но на него всё ещё ссылаются другие части программы. Обычная ссылка удерживает объект в памяти, а слабая ссылка (weak reference) — нет.
Она не мешает сборщику мусора удалить объект, если больше нет сильных ссылок
import weakref
class Data:
def __init__(self, name):
self.name = name
def __del__(self):
print(f"{self.name} удалён")
obj = Data("Test")
ref = weakref.ref(obj)
print(ref()) # <__main__.Data object at ...>
del obj
print(ref()) # None — объект собран GC
📌 weakref.ref() создаёт слабую ссылку: объект может быть удалён, даже если ссылка ещё существует.
Please open Telegram to view this post
VIEW IN TELEGRAM