gpt4 book ai didi

python - 如果我们在生成器对象引发 'StopIteration' 异常之前停止迭代会发生什么

转载 作者:行者123 更新时间:2023-12-03 17:00:25 25 4
gpt4 key购买 nike

我有一个 generator检查列表中某个条件的对象。这个程序适用于我的所有情况。

但我只想澄清一些关键点。

在我的程序中每当generator yield'No''Done'控制迭代停止并调用 generator与另一个论点。

这可能是一个愚蠢的问题,反正就是,每当generator对象被产生并且我们停止在它旁边调用,该对象是否已被垃圾收集解决?或者当我们调用 generator 时,产生的对象是否正在被垃圾收集处理再次提出另一个论点。

请向我澄清 generator 会发生什么情况对象,如果我们停止调用 next()在它之前提出 StopIteration异常(exception)。当前generator的持久执行点和变量会发生什么变化对象,当我们再次使用新参数调用生成器时。

最佳答案

我争论是否将其作为评论,因为我不是 Python 中 GC 实现细节的专家,但决定了一个答案,因为它似乎可能会有所帮助。

我认为它只会在您丢失对它的所有引用时才被垃圾收集,但这应该无关紧要,因为生成器通常用于避免在内存中存储内容,因此它们通常不是很大。我认为在它击中之前停止使用它很好StopIteration .事实上,很多生成器从不调用 StopIteration (例如,如果他们正在枚举一些无限级数),因此您应该停止调用 next在许多情况下,在到达“结束”之前就可以了。

关于python - 如果我们在生成器对象引发 'StopIteration' 异常之前停止迭代会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61685623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com