擅长:python、mysql、java
<ol>
<li><p><code>new_lst</code>在函数存在且未返回时被清除。它的引用计数下降到0,并且可以被垃圾收集。在当前的cpython实现中,这种情况会立即发生。你知道吗</p>
<p>如果它<em>被</em>返回,<code>new_lst</code>引用的值替换了<code>lst</code>;<code>lst</code>引用的列表看到它的引用计数下降了1,但是<code>new_lst</code>最初引用的值仍然被另一个变量引用。</p></li>
<li><p><code>tuple()</code>键是存储在<code>dict</code>中的值,因此这不是临时的。除了该元组之外,不会创建其他对象。</p></li>
<li><p>用新的dict替换旧的<code>cache</code>dict将使引用计数减少1。如果<code>cache</code>是dict的唯一引用,它将被垃圾收集。然后,这将导致包含的所有元组键的引用计数减少1。如果没有其他引用,这些将被垃圾收集。</p></li>
<li><p>请注意,当Python释放内存时,并不一定意味着操作系统会立即回收内存。大多数操作系统只会在需要内存做其他事情时才回收内存,而不是假定程序可能很快又需要部分或全部内存。</p></li>
</ol>