
上QQ阅读APP看书,第一时间看更新
1.9.3 函数调用
菲菲兔仔细想了想,回过神来了,说:“我知道了。因为用def只是定义了一个函数。我们还没有使用它呀!”说着,她在运行过程序的IDLE提示符后输入了以下代码:
>>> add1() 计算两个数的和 输入第一个数: 5.555 输入第二个数: 6.666 5.555000+6.666000=12.221000 计算完毕
使用函数也称作函数的调用。当程序执行到函数调用的地方时,程序就转向函数内部执行,直到函数体代码执行完毕,再返回函数调用的后面一行代码继续执行。函数调用和返回的过程如图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所示。
函数调用时有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程序中随处可见,我们以后还会遇到更多的函数!”