擅长:python、mysql、java
<p>请看这篇关于<a href="https://docs.python.org/2/reference/datamodel.html" rel="nofollow">data model</a>的文章,特别是关于可变性的部分。你知道吗</p>
<p>下面是一个列表如何可变的示例</p>
<pre><code>>>> arr = [1,2,3]
>>> arr[0] = 99
>>> print(arr)
[99, 2, 3]
</code></pre>
<p>调用<code>addInterest</code>函数时,将<code>amounts</code>数组作为参数传递,它修改了该数组。下面是另一个例子,展示了这是如何发生的</p>
<pre><code>def test(my_list):
print(my_list)
my_list[0] = 99
print(my_list)
</code></pre>
<p>现在在解释器中测试</p>
<pre><code>>>> arr = [1,2,3]
>>> x = test(arr)
[1,2,3]
[99, 2, 3]
>>> arr
[99,2,3]
>>> x
>>> x is None
True
</code></pre>
<p>您可以看到,函数的返回值是<code>None</code>,我们将其存储在名为<code>x</code>的变量中。但是这个函数还有一个副作用,即改变传递给它的list<code>arr</code>的值。你知道吗</p>
<p>最后,让我们看一个类似您的示例,其中数组是在函数中定义的。你知道吗</p>
<pre><code>def change_list(l):
print(l)
l[0] = 99
print(l)
def test():
arr = [1,2,3]
change_list(arr)
</code></pre>
<p>在口译员那里查一下</p>
<pre><code>>>> x = test()
[1, 2, 3]
[99, 2, 3]
>>> x
>>> x is None
True
</code></pre>
<p>希望这能消除任何混乱。你知道吗</p>