title: What does *tuple and **dict mean in Python?
body: <p>As mentioned in PythonCookbook, <code>*</code> can be added before a tuple. What does <code>*</code> mean here?</p>
  <blockquote>
  <p>Chapter 1.18. Mapping Names to Sequence Elements:</p>
  <pre><code>from collections import namedtuple
  Stock = namedtuple('Stock', ['name', 'shares', 'price'])
  s = Stock(*rec) 
  # here rec is an ordinary tuple, for example: rec = ('ACME', 100, 123.45)
  </code></pre>
  </blockquote>
  <p>In the same section, <code>**dict</code> presents:</p>
  <blockquote>
  <pre><code>from collections import namedtuple
  Stock = namedtuple('Stock', ['name', 'shares', 'price', 'date', 'time'])
  # Create a prototype instance
  stock_prototype = Stock('', 0, 0.0, None, None)
  # Function to convert a dictionary to a Stock
  def dict_to_stock(s):
      return stock_prototype._replace(**s)
  </code></pre>
  </blockquote>
  <p>What is <code>**</code>'s function here?</p>