定义函数时:
def f(*args): print(args)
这种声明函数的方法,往里传参时需要按照顺序传,而且传的参数数目不定,得到的是个元组
>>> def f(*args): print(args) >>> f(1,2,3) (1, 2, 3)
def f(**args): print(args)
这种的话,要按照映射关系传参数,不是按照顺序,传完会产生字典
>>> def f(**args): print(args) >>> f(a=1,b=2,c=3) {'a': 1, 'b': 2, 'c': 3}
################################
调用函数时:
*x: 表示传的变量是个可迭代对象,第一次迭代出的内容赋值给第一个变量,以此类推,变量的数量和参数的数量要一致
>>> def f(a,b,c): print(a+b+c) >>> l = [1,2,3] >>> f(*l) 6
**x:
按照字典的映射关系传参数
>>> def f(a,b,c): print(a+b+c) >>> d={'a':1, 'b':2,'c':3} >>> f(**d) 6
例:如果*和**一起出现,则**一定在*的后面
>>> def f(a, *pargs, **kargs): print(a, pargs, kargs) >>> f(1,2,3,4, x=1, y=2) 1 (2, 3, 4) {'x': 1, 'y': 2}