擅长:python、mysql、java
<p>考虑一个具有两种实现的函数:</p>
<pre><code>def remove_first_a(t):
t = t[1:]
def remove_first_b(t):
del t[0]
</code></pre>
<p>现在,请参阅正在使用的这些函数:</p>
<pre><code>> l = [1, 2, 3]
> remove_first_a(l)
> l
[1, 2, 3]
> remove_first_b(l)
> l
[2, 3]
</code></pre>
<p>第一个实现只重新分配<strong>局部</strong>变量<code>t</code>,这对作为参数传递的对象没有影响。第二个实现实际上改变了这个对象。第一个函数在当前的形式下是相当无用的。你可以改变它:</p>
<pre><code>def remove_first_a(t):
return t[1:]
> l = [1, 2, 3]
> x = remove_first_b(l)
> x
[2, 3]
</code></pre>
<p>你想要一个还是另一个,更多的取决于实际的用例。有时您希望原始的<code>list</code>仍然保持不变以供以后使用,有时您希望确保原始的<code>list</code>在所有仍有对其引用的地方都得到更改。</p>