Python函数的参数传递(3)
2016-08-10 16:47
211 查看
def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5) print '------'
def func(x, y=5, *a, **b): print x, y, a, b func(1) func(1,2) func(1,2,3) func(1,2,3,4) func(x=1) func(x=1,y=1) func(x=1,y=1,a=1) func(x=1,y=1,a=1,b=1) func(1,y=1) func(1,2,3,4,a=1) func(1,2,3,4,k=1,t=2,o=3)
结果:
a : 1
c : 3
b : 2
y : 5
x : 4
------
1 5 () {}
1 2 () {}
1 2 (3,) {}
1 2 (3, 4) {}
1 5 () {}
1 1 () {}
1 1 () {'a': 1}
1 1 () {'a': 1, 'b': 1}
1 1 () {}
1 2 (3, 4) {'a': 1}
1 2 (3, 4) {'k': 1, 't': 2, 'o': 3}
注意:
在混合使用时,首先要注意函数的写法,必须遵守:
带有默认值的形参(arg=)须在无默认值的形参(arg)之后;
元组参数(*args)须在带有默认值的形参(arg=)之后;
字典参数(**kargs)须在元组参数(*args)之后
调用时也需要遵守:
指定参数名称的参数要在无指定参数名称的参数之后;
不可以重复传递,即按顺序提供某参数之后,又指定名称传递。
而在函数被调用时,参数的传递过程为:
1.按顺序把无指定参数的实参赋值给形参;
2.把指定参数名称(arg=v)的实参赋值给对应的形参;
3.将多余的无指定参数的实参打包成一个
tuple 传递给元组参数(*args);
4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)。
相关文章推荐
- python 函数参数的传递说明
- python 函数参数的传递(参数带星号的说明)
- Python的函数参数传递:传值?引用?
- python 函数参数传递
- python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
- 【转】python函数参数的传递
- python中用元组传递函数参数的形式
- Python的函数参数传递:传值?引用?
- [zt]Python的函数参数传递:传值?引用?
- Python的函数参数传递:传值?引用?
- python 函数参数的传递(参数带星号的说明)
- python中函数参数传递的几种方法
- python下函数参数的传递(参数带星号的说明)
- Python的函数参数传递:传值?引用?
- python 函数参数的传递
- python中函数参数的传递
- Python中函数的参数传递
- Python 函数参数的传递[转载]
- Python的函数参数传递:传值?引用?
- python 函数参数的传递(参数带星号的说明)及调用