零基础学Python编程(少儿趣味版)
上QQ阅读APP看书,第一时间看更新

1.9.3 函数调用

菲菲兔仔细想了想,回过神来了,说:“我知道了。因为用def只是定义了一个函数。我们还没有使用它呀!”说着,她在运行过程序的IDLE提示符后输入了以下代码:


>>> add1()
计算两个数的和
输入第一个数: 5.555
输入第二个数: 6.666
5.555000+6.666000=12.221000
计算完毕

使用函数也称作函数的调用。当程序执行到函数调用的地方时,程序就转向函数内部执行,直到函数体代码执行完毕,再返回函数调用的后面一行代码继续执行。函数调用和返回的过程如图1-23所示。箭头表示了程序中语句执行的顺序。

图1-23 函数的调用和返回

函数也可以写成更简单的形式。在上述代码后面创建另一个函数,叫作add2(a, b),代码如下:


def add2(a,b):
    return float(a)+float(b)     #返回值

函数add2有两个参数a和b,而且函数中使用了关键字return,return的后面就是需要返回的值,也叫作函数值。这个函数的函数体虽然只有一行,但是已经可以解决问题了。

在定义完函数以后就可以使用它们了。比如在文件后面输入以下代码:


#调用函数
add1()
print('================分隔线================')
print("计算两个数的和")
#从键盘输入一个数
m=float(input("输入第一个数: "))
#再从键盘输入一个数
n=float(input("输入第二个数: "))
print(add2(m,n))

代码中add1()和add2(a, b)两处分别调用了add1和add2函数。运行程序,结果如图1-24所示。

图1-24 调用函数示例

函数调用时有3条规则需要注意:

1)调用时参数个数要与函数定义时的个数一致。比如add2(a, b)定义中有两个参数,那么调用时也要给两个参数,比如add2(3, 4)。

2)调用时参数的类型要符合函数定义时的要求。但是Python函数定义时并不会明显地指出需要的参数类型,只在函数体中体现。所以调用函数前一定要弄清参数的类型,以免出错。比如使用add2('m', 'n')调用函数,肯定会出错:


>>> add2('m','n')
Traceback (most recent call last):
    File "<pyshell#1>", line 1, in <module>
        add2('m','n')
    File "C:\Workspace\1.9\def_func.py", line 14, in add2
        return float(a)+float(b)     #返回a+b的值
ValueError: could not convert string to float: 'm'

因为函数体中需要将两个参数都转换成浮点型,显然字符串不能被成功转换。

3)调用时参数的顺序也需要和函数定义时一致。比如add2(3, 4)调用函数时,3就会赋值给参数a,4就会赋值给参数b。

“函数在Python程序中随处可见,我们以后还会遇到更多的函数!”