定义一个函数,定义行参时,可以为行参指定默认值
指定了默认值以后,如果用户传递了参数则默认值没有任何作用,如果用户没有传递参数,则默认值就会生效
deffn(a=5,b=3,c=29): print('a=',a) print('b=',b) print('c=',c) print('*'*65) #调用fn函数fn(1,2,3) fn(1,2) fn()
得到的结果是:
一、位置参数
位置参数,将对应位置的实参赋值给对应位置的形参。
第一个实参赋值给第一个形参,第二个实参赋值给第二个形参,以此类推。
fn(1 , 2 , 3 )
1赋值给 a
2赋值给 b
3赋值给 c
一一对应
位置参数是使用最多的传递方式,但是有一个缺陷,当某个参数具有某个意义,比如a 代表...b 代表...c 代表...在调用函数传递参数的时候,需要明确各自的意义。
在使用位置参数时,需要记住形参的位置。
二、关键字参数
关键字参数,可以不按照形参定义的顺序去传递,而直接根据参数名去传递参数。
关键字参数的优点为,不需要记忆参数的顺序,只需要记忆参数的名称.
deffn(a=5,b=3,c=29): print('a=',a) print('b=',b) print('c=',c) print('*'*65) #调用fn函数fn(b=1,a=2,c=3)
位置参数和关键字参数可以混合使用
deffn(a=5,b=3,c=29): print('a=',a) print('b=',b) print('c=',c) print('*'*65) #调用fn函数fn(1,c=2)
混合使用关键字参数和位置参数时,必须将位置参数输入在前面,后面输入关键字参数。
假如输入 fn(1,a=30)这种情况,也会报错。
因为赋予了 a 两个值,指定了位置参数后,就不要指定关键字参数。
fn(1 位置已经给到 a,后面就不能再输入 a,换成 c 后,保存即可。
这就是参数传递的两种方式,位置参数和关键字参数。