1.将足够的参数解包以后传递给函数:
>def f(p1, p2, p3, p4):
> print p1+p2+p3+p4
>
>li = [1, 2, 3, 4]
>f(*li)
10
>
>tu = (1, 2, 3, 4)
>f(*tu)
10
>
>di = {‘p1‘:1, ‘p2‘:2, ‘p3‘:3, ‘p4‘:4}
>f(**di)
>10
2.使用封包的方法访问多余的参数
>>> def funct(*para, **para_dict):
... print para
... print para_dict
...
>>> funct(1,2,3,4,x=5,y=6,z=7)
(1, 2, 3, 4)
{‘y‘: 6, ‘x‘: 5, ‘z‘: 7}
>>> funct(1,x=5,y=6,z=7)
(1,)
{‘y‘: 6, ‘x‘: 5, ‘z‘: 7}
将多余的位置参数封包入para,将多余的关键字参数封包入para_dict,前者是一个序列(明确一点:元组tuple),后者是一个字典。
关于python的函数的*和**参数:,布布扣,bubuko.com
原文:http://my.oschina.net/rst/blog/299617