<p>从<a href="http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists" rel="nofollow noreferrer">Python documentation</a>:</p>
<blockquote>
<p>The reverse situation occurs when the
arguments are already in a list or
tuple but need to be unpacked for a
function call requiring separate
positional arguments. For instance,
the built-in range() function expects
separate start and stop arguments. If
they are not available separately,
write the function call with the
*-operator to unpack the arguments out of a list or tuple:</p>
</blockquote>
<pre><code>>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
</code></pre>
<blockquote>
<p>In the same fashion, dictionaries can
deliver keyword arguments with the
**-operator:</p>
</blockquote>
<pre><code>>>> def parrot(voltage, state='a stiff', action='voom'):
... print "-- This parrot wouldn't", action,
... print "if you put", voltage, "volts through it.",
... print "E's", state, "!"
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
</code></pre>