title: Function to calculate the product of several numbers
body: <p>I had a function to calculate the product of several numbers, but it cannot pass the test part:</p>
  <pre><code>def mul(*numbers):
      product = 1
      for n in numbers:
          product = product * n
      return product
  
  # Tests that pass
  assert mul(5) == 5
  assert mul(5, 6) == 30
  
  # Tests that fail!
  try:
    mul()
    assert false, &quot;Expected a TypeError exception to be raised&quot;
  except TypeError:
    pass
  </code></pre>
  <p>If I modify the code like this:</p>
  <pre><code>def mul(x, y=1, *numbers):
      product = x*y
      for n in numbers:
          product = product * n
      return product
  </code></pre>
  <p>It works well. My question is why we need to write <code>product = x*y</code>?</p>