参考网址:https://www.cnblogs.com/cwind/p/8996000.html
1. *
1. 定义一个含三个位置参数的函数”fun”. >>> def fun(a,b,c): ... print a,b,c ... 2. 传三个位置参数调用此函数 >>> fun(1,2,3) 1 2 3 #输出 可以看到出入三个位置参数调用此函数,会打印出三个参数 3. 现在我们定义一个含三个整数的数列,并使用’*’ >>> l = [1,2,3] >>> fun(*l) 1 2 3 #输出
“*”拆开数列’l’的数值作为位置参数,并吧这些位置参数传给函数’fun’来调用
2. *args
1. 修改函数的定义: >>> def fun(*args): ... print args ...
2. 传一个位置参数调用此函数 >>> fun(13) (13,) 传多个参数调用此函数 >>> fun(11,93,43) (11, 93, 43)
“*args”接收元组作为位置参数,而非是常见的参数列表,它可以接受任意个参数
3. **
定义一个三个参数的函数,并用多种方式调用: >>> def fun(a, b, c): ... print a, b, c ... >>> fun(1,5,7) 1 5 7 >>> fun(a=1,b=5,c=7) 1 5 7
使用”**”调用函数,这种方式我们需要一个字典.注意:在函数调用中使用”*”,我们需要元组;在函数调用中使用”**”,我们需要一个字典 >>> d={'b':5, 'c':7} >>> fun(1, **d) 1 5 7
“**”可以unpack字典,并将字典中的数据项作为键值参数传给函数。因此,上例中”fun(1, **d)”的写法与”fun(1, b=5, c=7)”等效.
4. **kwargs
定义函数”fun”: >>> def fun(a, **kwargs): ... print a, kwargs ... 此函数只用一个位置参数,因为常规参数列表中只有一个变量’a’.但是通过”**kwargs”,可以传多个键值参数。 >>> fun(1, b=4, c=5) 1 {'c': 5, 'b': 4} >>> fun(45, b=6, c=7, d=8) 45 {'c': 7, 'b': 6, 'd': 8}
用”**kwargs”定义函数,kwargs接收除常规参数列表职位的键值参数字典。在这里’kwargs’是个字典。