title: Default Values in Functions
body: <p>The following warning is in the Default Values in Function Arguments section in Python Docs.</p>
  
  <p>Important warning: The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes. For example, the following function accumulates the arguments passed to it on subsequent calls:</p>
  
  <pre><code>def f(a, L=[]):
      L.append(a)
      return L
  
  print(f(1))
  print(f(2))
  print(f(3))
  </code></pre>
  
  <p>This will print</p>
  
  <p>[1]</p>
  
  <p>[1, 2]</p>
  
  <p>[1, 2, 3]</p>
  
  <p>If you don’t want the default to be shared between subsequent calls, you can write the function like this instead:</p>
  
  <pre><code>def f(a, L=None):
      if L is None:
          L = []
      L.append(a)
      return L
  </code></pre>
  
  <p>I didn't quite understand how the L=None part of code solves this problem. Can you help me understand. Thanks</p>