擅长:python、mysql、java
<p>正如其他人所说,失败的原因是你在散列对象的字符串表示。我想它交替的原因是因为字符串表示包含文件对象存储的内存地址。当您这样做时:</p>
<pre><code>f = open(...)
</code></pre>
<p>您将该file对象存储在<code>f</code>,指向内存X。当您再次执行相同操作时,<code>open()</code>将被调用并分配更多内存。由于<code>f</code>仍然指向内存X,该内存仍在使用中,而第二个<code>open()</code>在Y分配新内存。但是,一旦<code>open()</code>返回,结果就被分配给<code>f</code>。现在指向内存X的file对象挂起并被垃圾回收。对<code>open()</code>的下一次调用将在X重用内存,因为它现在是空闲的(这不是保证,但很常见)</p>