函数的参数类型
一、位置参数
1.函数调用时,实参默认按位置顺序传递形参。按位置传递的参数称之为位置参数
2.位置参数是参数定义的最基本形式,本章前面的函数定义采用的都是位置参数
执行结果为:
位置参数必须以函数定义中的顺序来传递,如函数调用f(1, 2, 3)中的1、2和3分别对应函数定义f(a,b, c)中的a、b和c。
二、默认值参数
1.可以为一个或多个参数指定默认值,这样,在调用时就可以传入比定义时更少的实际参数
执行结果为:
参数a是位置参数,调用时必须传入。参数b和c给出了默认值,调用时这些参数如果不指定实参,将采用默认值
2.上例中的f() 函数可以通过几种不同的方式调用参数:
3.对于引用传递的参数(实参值在函数内部可能改变),即使函数被多次调用,默认值也只会被赋值一次,参数值的改变可能在多次调用中累积。
执行结果为:
三、关键字参数
函数调用时可以通过关键字的形式来传递参数,使用关键字参数具有三个优点:参数按名称意义明确;传递的参数与顺序无关;如果有多个可选参数,则可以选择指定某个参数值
执行结果:
上例中,正确的调用方式包括:
错误的调用方式包括:
四、元组参数的封装与拆封
1.传递的元组参数必须在位置参数和默认参数之后。
执行结果:
在前两个调用中,前两个实参被传递给了形参a和b,剩余的参数被封装传递给形参name。第三个调用只有一个实参,该实参传递给形参a,形参b使用默认参数,而name只能接收到一个空元组。
2.在函数定义中,任何出现在*name后面的参数都被当成是关键字参数
执行结果:
3.元组参数的拆封需注意:
执行结果:
4.封装参数可以与一般参数组合使用
执行结果:
五、字典参数的封装与拆封
1.可以使用形如“**dict”的形式,使用字典传递数量可变的关键字参数
执行结果:
2.字典参数的拆封
执行结果:
总结: