擅长:python、mysql、java
<p>只要生成器对象处于活动状态,文件将保持打开状态。当生成器被垃圾回收时(通常在<code>lookForSpecificLine</code>函数的末尾),Python将对其调用<code>close</code>,作为{a1}中描述的协同例程协议的一部分。<code>close</code>方法使Python在暂停的地方(就在<code>yield</code>语句之后)向生成器的代码中抛出一个<code>GeneratorExit</code>异常。由于您没有捕捉到该异常(通常不应该捕捉到),它将跳出循环并导致<code>with</code>语句关闭文件。在</p>
<p>请注意,如果<code>lookForSpecificLine</code>更复杂,并且存在导致异常(将在更高级别捕获)的风险,则可能无法快速清理。这是因为异常回溯将使函数的堆栈帧保持活动状态,因此生成器不会立即被垃圾回收,文件也不会关闭。在</p>