6.6 形参和实参
函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参在调用函数时传入。
1. 形参与实参的概念
形式参数:在函数定义中出现的参数,可以看作是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。
实际参数:函数被调用时给出的参数,包含实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。
2. 参数的功能
形参和实参的功能是数据传送,发生函数调用时,实参的值会传送给形参。
3. 形参和实参的特点
(1)形参变量只有在函数被调用时才会分配内存,调用结束后立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。
(2)实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。
(3)实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。
注意 函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变时,实参的值不会随之变化。
【例6.4】形参和实参的应用(源代码\ch06\6.4.py)。
保存并运行程序,结果如图6-29所示。
图6-29 运行结果
注意 在定义函数时,函数的参数就是形参,形参即形式上的参数,它代表参数,但是不知道具体代表的是什么参数。实参就是调用函数时的参数,即具体的、已经知道的参数。
内置函数的组合规则,在用户自定义函数上也同样可用。例如,对自定义的gg( name,price )函数可以使用任何表达式作为实参。
修改【例6.4】中调用函数的代码如下:
gg("冰箱" *4, 4600)
保存并运行程序,结果如图6-30所示。可以用字符串的乘法表达式作为实参。作为实参的表达式,会在函数调用之前执行,因此在上面的例子中,表达式"冰箱"*4只执行一次。
图6-30 运行结果
变量也可以作为实参,例如:
aa="冰箱" gg(aa, 4600)
由此可见,实参的名称和函数定义里的名称没有关系。