list_iterator类在哪里定义?

时间:2019-11-20 21:16:38

标签: python python-3.x iterator

我希望看到类PopupWindowAction的定义。当我尝试使用功能list_iterator显示其定义时,出现错误。我必须导入一个模块才能访问其帮助吗?

更确切地说,我想知道如何获得对迭代器迭代的对象的引用。例如:

help

我非常确定对象l = [1,2,3,4,5] it = iter(l) print(type(it)) # this prints: list_iterator # how to get a reference to l using it 引用了对象it。这个例子证明了这一点:

l

因此,第三个引用肯定来自import sys l = [1,2,3,4] print(sys.getrefcount(l)) # prints 2 it = iter(l) print(sys.getrefcount(l)) # prints 3

1 个答案:

答案 0 :(得分:4)

垃圾收集的get_referents为您这样做吗?

import gc

l = [1,2,3,4,5]
it = iter(l)

refs = gc.get_referents(it)  # looks like: [[1, 2, 3, 4, 5]]
assert l in refs  # True
assert l == refs[0]  # True

编辑:应该注意的是,l耗尽后,对it的引用会消失,而将StopIteration抬高。因此,当您完成对it的迭代时,上述引用检查将失败。根据您的用例,这可能是功能,也可能是错误,但是您应该意识到这一点。

# Exhaust the iterator
for x in it:
    pass

refs = gc.get_referents(it)
assert l not in refs  # No more reference to l
assert not refs  # No more reference to anything actually