一、实参和形参
形参:指的是在定义函数时,括号()内指定的参数。本质就是变量名
实参:指的是在调用函数时,括号()内传入的值。本质就是值
只有在调用函数时才会在函数体内发生实参(值)与形参(变量名)的绑定关系
该绑定关系只在调用函数时临时生效,在调用函数结束后就解除绑定
二、位置参数与关键字参数
位置参数:在定义函数时,按照从左到右顺序依次定义的形参称之为位置形参
注意:1.但凡是按照位置定义的形参,在调用函数时必须传其值,多一个不行,少一个不行
位置实参:在调用函数时,按照从左到右的顺序依次传入的值
注意:1.在传值时,按照顺序与形参一一对应
关键字实参:在调用函数时,按照key=value的形式定义的实参,称之为关键字实参。
注意:1.在传值可以完全打乱顺序,但仍然可以指名道姓的指定参数传值
2.位置参数可以和位置参数混合使用。
位置参数不能跟在关键字参数后面
并且不能重复传值
三、默认形参
在定义函数时,就已经为某些参数绑定值,称之为默认参数
注意:1.在定义阶段就已经有值,就意味着在调用阶段就可以不用为其传值
2.若已经传值,则以传入值为准
3.默认形参的值只在定义阶段生效一次,在函数定义之后发生的改动无效
4.默认形参的值通常应该是不可变类型
默认形参VS位置形参:
默认形参:大多数情况下值都一样
位置形参:大多数值都是不一样
四、可变长度的参数:
可变长度指的是在调用函数时,函数参数的个数可以不固定
然而实参终究是要为形参传值的,针对实参个数不固定,对应着也形参也必须有两种解决方案,来分别处理溢出的关键字实参(**)和位置实参(*)。
*处理的溢出的位置参数,会保存成元祖的形式赋給 *后面的变量名
**处理的溢出的关键字参数,会保存成字典的形式赋給 *后面的变量名
实参中带*
窍门:但凡碰到实参中带*,都先将其打散成位置实参
窍门:但凡碰到实参中带**,都先将其打散成关键字实参