1.3 定义和调用函数

为了提升代码的可维护性和重用性,我们需要在Python代码里定义函数。在本节里,除了将讲述定义和调用函数的常规用法外,还将讲述使用函数的若干注意点。

在Python里,函数也叫方法,在其中可以封装一些通用性的功能代码。在之前的案例中,我们已经调用过Python自定义的函数,比如通过调用print函数实现输出的功能。此外,我们还可以定义自己的函数。

比如,我们想在代码里多次实现累加和的操作,就可以定义一个函数,在其中封装通用性的代码,在使用时调用。在如下的FuncDemo.py案例中,通过实现累加和功能向大家展示定义和调用函数的做法。


01 def calSum(maxNum):
02     sum = 0
03     num=0
04     while num <= maxNum:
05         sum = sum + num
06         num = num + 1
07     return sum
08 print(calSum(100)) # 5050
09 print(calSum(50))  # 1275
10 # bad usage
11 print(calSum('100')) # see exception

从第1行到第7行的代码里,大家能看到一个函数定义的范例。在第1行里,我们通过def定义了名为calSum的函数,它携带一个名为maxNum的参数。注意,def语句也需要以冒号结尾。在第2~7行以缩进的方式定义了该函数的主体代码,其中以while循环的方式实现了累加和,若有必要,则需要通过第7行的方式用return返回该函数的运行结果。

定义完成后,在第8、9行,我们分别通过调用calSum实现了从1到100和从1到50的累加和。通过函数封装功能,我们能避免编写重复性的代码。

注意,由于在定义函数参数时无法指定参数的类型,因此在调用时尤其得小心,传入的参数类型需要和定义时相匹配。比如在第1行定义的calSum函数,它的参数本意是整型数据,如果调用时传入的是浮点型数据,虽然结果有些怪,但是不会出现语法问题,而如果如第11行那样传入字符串型参数,就会出现异常。