跟老齐学Python之变量和参数(3)
除了用*args这种形式的参数接收多个值之外,还可以用**kargs的形式接收数值,不过这次有点不一样: 复制代码 代码如下: def foo(**kargs): ... print kargs ... fo
除了用*args这种形式的参数接收多个值之外,还可以用**kargs的形式接收数值,不过这次有点不一样:
复制代码 代码如下:
>>> def foo(**kargs):
... print kargs
...
>>> foo(a=1,b=2,c=3) #注意观察这次赋值的方式和打印的结果
{'a': 1, 'c': 3, 'b': 2}
如果这次还用foo(1,2,3)的方式,会有什么结果呢?
复制代码 代码如下:
>>> foo(1,2,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: foo() takes exactly 0 arguments (3 given)
看官到这里可能想了,不是不确定性吗?我也不知道参数到底会可能用什么样的方式传值呀,这好办,把上面的都综合起来。
复制代码 代码如下:
>>> def foo(x,y,z,*args,**kargs):
... print x
... print y
... print z
... print args
... print kargs
...
>>> foo('qiwsir',2,"python")
qiwsir
2
python
()
{}
>>> foo(1,2,3,4,5)
1
2
3
(4, 5)
{}
>>> foo(1,2,3,4,5,name="qiwsir")
1
2
3
(4, 5)
{'name': 'qiwsir'}
很good了,这样就能够足以应付各种各样的参数要求了。
- 上一篇:跟老齐学Python之总结参数的传递
- 下一篇:跟老齐学Python之重回函数
精彩图集
精彩文章