How does the value of this simulated function-static-variable is kept during callings?
<p>Refer to <a href="http://stackoverflow.com/a/279592/391104">this</a></p>

<blockquote>
<pre><code>&gt;&gt;&gt; def foo(counter=[0]):
...   counter[0] += 1
...   print("Counter is %i." % counter[0]);
... 
&gt;&gt;&gt; foo()
Counter is 1.
&gt;&gt;&gt; foo()
Counter is 2.
&gt;&gt;&gt;
</code></pre>
  
  <p>Default values are initialized only when the function is first evaluated, not each time it is executed, so you can use a list or any other mutable object to maintain static values.</p>
</blockquote>

<p><strong>Question</strong>> Why the <code>counter</code> can keep its updated value during different callings? Is it true that <code>counter</code> refers to the same memory used to store the temporary list of the default parameter so that it can refer to the same memory address and keep the updated values during the calls?</p>
