让我们创建一个简单的元组、字典和函数。
>>> tup = (7, 3)
>>> dic = {"kw1":7, "kw2":3}
>>> def pr(a, b):
... print a, b
下面显示了*
在元组和字典作为参数之前所做的事情。
>>> pr(tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pr() takes exactly 2 arguments (1 given)
>>> pr(*tup)
7 3
>>> pr(*dic)
kw1 kw2
现在让我们**
在争论之前尝试一下。
>>> pr(**tup)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pr() argument after ** must be a mapping, not tuple
好的,似乎 ** 仅在将字典用作参数时才有效。那么让我们用字典来试试吧。
>>> pr(**dic)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pr() got an unexpected keyword argument 'kw1'
什么?谁能给我看一个不会产生错误的最后一种情况的例子?