python 函数参数赋值过程
形参赋值的过程是这样的:首先按顺序把“arg”这种形式的实参给对应的形参第二,把“arg=”这种形式的实参赋值给形式第三,把多出来的“arg”这种形式的实参组成一个tuple给带一个星号的形参第四,把多出来的“key=value”这种形式的实参转为一个dictionary给带两个星号的形参。听起来好复杂,实际是是很简单的。很直观,来看例子: 1. def test(x,y=5,*a,**b): 2. print x,y,a,b 就这么一个简单函数,来看看下面对这个函数调用会产生什么结果: test(1) ===> 1 5 () {} test(1,2) ===> 1 2 () {} test(1,2,3) ===> 1 2 (3,) {} test(1,2,3,4) ===> 1 2 (3,4) test(x=1) ===> 1 5 () {} test(x=1,y=1) ===> 1 1 () {} test(x=1,y=1,a=1) ===> 1 1 () {'a':1} test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1} test(1,y=1) ===> 1 1 () {} test(1,2,y=1) ===> 出错,说y给赋了多个值 test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1} test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}