【发布时间】:2019-07-06 18:24:16
【问题描述】:
假设我有li = iter([1,2,3,4])。
当我执行next(li) 时,垃圾收集器会丢弃对不可访问元素的引用吗?
那么deque 呢,di = iter(deque([1,2,3,4])) 中的元素一旦被消耗就可以被收集。
如果没有,Python 中的原生数据结构是否实现了这种行为。
【问题讨论】:
-
列表迭代器本身不包含对列表中各个元素的引用。它本质上是索引的循环。 list 本身 仍然被迭代器引用,至少在它用完之前是这样。因此,在列表本身被回收之前,列表中的每个元素都会至少有一个有效引用
标签: python python-3.x list garbage-collection deque