什么是形参?什么是实参?看下图:
函数定义时,括号中定义的参数为形参,调用函数时传入的参数为实参。
关于函数的形参,有哪几种定义的方式:
1,不定义形参,即无参数,则调用时不传参直接调用
2,普通位置参数:
图中的a,b 就是普通的位置参数,调用该函数时要一一对应的传入实参,个数不能多也不能少
3,默认参数
当函数有默认参数时,调用该函数时可以不传该参数,该参数为默认值,也可以传该参数,那么
传入的参数将覆盖默认值
4,可变参数之 *args。其实这种也叫包裹位置参数,将参数打包为元组传入
打印结果为:
我们可以看到,第一个参数是位置参数,传给形参a,后面的参数将作为一个整体传给可变参数
*args,那么 1, “b”, 3 将被装包为元组传入。若传入的是一个列表或者元组,则需要将其拆包后
进行传递,传入后函数底层在对其进行装包
注: *(1,“b”, 3)和 *(1,“b”, 3)拆开后为单个的 1,“b”, 3 。
5,可变参数之**kwargs,其实这种也叫包裹关键字参数,将参数打包为字典传入
打印结果为:
我们可以看到,第一个参数为位置参数,传入的“b”与之对应,传入的b=1,c=2, d=3将会
被装包为一个字典传入,当要直接传入字典时,则需通过**进行拆包后传入,然后由函数
底层再次装包为一个字典