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

标签 python generator

我有一个 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/

相关文章:

python - 种子选项 : Using different packages for machine learning in Python

python - 使用 Pandas 计算并绘制计数比率

JavaScript 唯一浏览器 ID

javascript - MarkLogic Qconsole Javascript 代码输出

java - 用于生成 XML 的 GUI

python - Heroku 免费层,用于在一个应用程序中实现不间断的 Web 和工作进程

python - 使用 python flask 的松弛事件 API 响应

python - 从 python 中的列表创建生成器表达式

python - 在 map 内联(Jupyter)上绘制坐标的最快方法是什么?

python - 解析生成器 Python 2