形参与实参
形参:就是形式参数,在函数定义时,写在括号里面指定的参数就是形式参数
实参:在调用函数时传入的参数就是实参
在调用函数时就会自动的把形参与实参绑定起来,然后调用结束之后,解除绑定关系
位置形参与位置实参
按照一定的顺序(从左往右)定义的参数就是位置参数
注意:
只要是定义了的位置形参都必须被传值
位置形参的数量与位置实参的数量必须一致,不能多传,也不能少传
实参会按照传入的位置依次赋值给形参
关键字参数
关键字实参:
在调用函数时,指名道姓的为形参赋值就称之为关键字参数
优点是
打破传入参数的顺序,可以与形参的顺序不同
注意:
1.不管以什么方式传值,每一个形参都应该被传值,
2.关键字参数必须放在位置参数的后面
3.不能为同一个形参传多次值
4.使用关键字传参时,实参的名字必须与形参的名字匹配
到底是位置参数还是关键字,是由实参传值的时候决定的
默认形参:
在定义时,已经为形参指定了一个值,那么这个形参就称之为默认形参
特定:
在调用时可以不用为默认形参传值,那么就使用这个参数的默认值
也可以为默认参数传值,则就使用传入的那个值
场景:当函数中的某一个形参经常出现重复的值,将其定义为默认形参
注意:
1.默认形参必须放在非默认形参的后面
2.默认形参的值在定义的时候就固定了
3.不应该将默认形参的默认值设置为一个可变类型,因为形参在定义的时候就已经固定了
所以会导致函数调用始终使用那块空间
可变长参数
*的使用
带*的形参可以接受任意个数的实参,接受 到的实参会被打包成元组类型,形参的名字可以任意,
但是建议使用args
带*的实参
实参前面加*会将*后面的值打散
带*的形参不能接受关键字实参
当可变长形参出现在了位置形参的前面时,那么后面的位置形参必须以关键字实参传入
当可变长形参出现在了位置形参后面,会先按照顺序给前面位置位置形参赋值,多余的参数打包给*
**的使用
形参中如果带有**,会把关键字实参打包成字典类型传入
只能接受多出来的关键字实参
实参中**,会把**后面的字典打散,成为关键字实参
*和**为函数提供了拓展空间,后面根据需求增加参数