深入 Python 函数定义参数列表的分拆。
另有一种相反的情况: 当你要传递的参数已经是一个列表,但要调用的函数却接受分开一个个的参数值。这时候你要把已有的列表拆开来。例如内建函数 range() 需要独立的 start ,stop 参数。 你可以在调用函数时加一个 * 操作符来自动把参数列表拆开:
list(range(3, 6)) # normal call with separate arguments
[3, 4, 5]
args = [3, 6]
list(range(*args)) # call with arguments unpacked from a list
[3, 4, 5]
以同样的方式,可以使用 ** 操作符分拆关键字参数为字典: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 !