【发布时间】:2020-07-08 18:22:37
【问题描述】:
scandir.close()
关闭迭代器并释放获取的资源。
当迭代器耗尽或垃圾收集时,或者在迭代过程中发生错误时,它会自动调用。但是,建议显式调用它或使用 with 语句。
3.6 版中的新功能。
亲爱的,我看到了这一段。它给我的印象是迭代器需要被耗尽和丢弃。为什么会这样?
【问题讨论】:
scandir.close()
关闭迭代器并释放获取的资源。
当迭代器耗尽或垃圾收集时,或者在迭代过程中发生错误时,它会自动调用。但是,建议显式调用它或使用 with 语句。
3.6 版中的新功能。
亲爱的,我看到了这一段。它给我的印象是迭代器需要被耗尽和丢弃。为什么会这样?
【问题讨论】:
Iterator 对象在其工作过程中可以获取或创建某些资源。这是scandir 的文件系统句柄。
因此,希望将其耗尽,因为在这种情况下,它将能够正确及时地释放这些资源。但这没有必要,有时会出现需要中断迭代的情况。在这种情况下,我们必须明确告诉对象我们不再想要迭代它并且它可以释放资源。
显式执行此操作比依赖垃圾收集器更好,这样可以更好地控制程序流程并防止出现意外错误。
【讨论】: