为什么需要用尽并丢弃迭代器?

Why does an iterator need to be exhausted and discarded?

scandir.close()

关闭迭代器并释放获取的资源。

当迭代器耗尽或垃圾收集时,或者在迭代过程中发生错误时,会自动调用此方法。但是,建议显式调用它或使用 with 语句。

版本 3.6 中的新增内容。

亲爱的,我看到了这一段。它给我的印象是迭代器需要用尽并丢弃。为什么会这样?

Iterator对象在其工作过程中可以获得或创建某些资源。这是 scandir.

情况下的文件系统句柄

因此,希望将其耗尽,因为在这种情况下它能够正确及时地释放这些资源。但这没有必要,有时候会出现需要中断迭代的情况。在这种情况下,我们必须明确地告诉对象我们不想再迭代它并且它可以释放资源。

明确地执行此操作比依赖垃圾收集器更好,这样可以更好地控制程序流并防止出现意外错误。