Python 3.6从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

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)

由此可见,实参的名称和函数定义里的名称没有关系。