- Python程序设计应用教程
- 夏敏捷 张西广
- 1296字
- 2021-03-25 10:05:16
4.1 函数的定义和使用
在Python程序开发过程中,可将完成某一特定功能并经常使用的代码编写成函数,放在函数库(模块)中供大家在需要使用时直接调用。开发人员要善于使用函数,以提高编码效率,减少编写程序段的工作量。
4.1.1 函数的定义
函数定义
在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,如C语言),但是在Python中,函数声明和函数定义是视为一体的。在Python中,函数定义的基本形式如下:
在这里说明几点:
(1)在Python中采用def关键字进行函数的定义,不用指定返回值的类型。
(2)函数参数可以是零个、一个或者多个,同样,函数参数也不用指定参数类型,因为在Python中变量都是弱类型的,Python会自动根据值来维护其类型。
(3)Python函数的定义中缩进部分是函数体。
(4)函数的返回值是通过函数中的return语句获得的。return语句是可选的,它可以在函数体内任何地方出现,表示函数调用执行到此结束;如果没有return语句,会自动返回None(空值),如果有return语句,但是return后面没有接表达式或者值,也返回None(空值)。
下面定义3个函数:
4.1.2 函数的使用
在定义了函数之后,就可以使用该函数,但是在Python中要注意一个问题,就是在Python中不允许前向引用,即在函数定义之前,不允许调用该函数。例如:
运行这段程序会出现错误提示:
从提示可知,名为add的函数未进行定义,所以在任何时候调用某个函数,必须确保其定义在调用之前。
【例4-1】编写函数实现最大公约数算法,通过函数调用代码实现求最大公约数。
分析:这里求两个数x、y最大公约数的算法是遍历法。循环变量i从1到最小那个数,用x、y同时去除以i,如果能整除则赋值给hcf;最后返回最大的hcf(最后一次赋值最大)。
程序代码:
程序运行结果:
【例4-2】编写函数,计算形式如a+aa+aaa+aaaa+…+aaa…aaa的表达式的值,其中a为小于10的自然数。例如,2+22+222+2222+22222(此时n=5),a、n由用户从键盘输入。
分析:关键是计算出求和中每一项的值。容易看出每一项都是前一项扩大10倍后加a。
程序代码:
程序运行结果:
4.1.3 lambda表达式
lambda表达式可以用来声明匿名函数,即没有函数名字的临时使用的函数,只可以包含一个表达式,且该表达式的计算结果为函数的返回值;不允许包含其他复杂的语句,但在表达式中可以调用其他函数。例如:
程序运行结果:
等价于定义:
可以将lambda表达式作为列表的元素,从而实现跳转表的功能,也就是函数的列表。lambda表达式列表的定义方法如下:
调用列表中lambda表达式的方法如下:
例如:
程序分别计算并打印2的平方、立方和四次方。程序运行结果:
4.1.4 函数的返回值
函数使用return返回值,也可以将lambda表达式作为函数的返回值。
【例4-3】定义一个函数math()。当参数k等于1时返回计算加法的lambda表达式;当参数k等于2时返回计算计算减法的lambda表达式;当参数k等于3时返回计算乘法的lambda表达式;当参数k等于4时返回计算除法的lambda表达式。
程序代码:
程序运行结果:
最后需要补充一点:Python中的函数是可以返回多个值的,如果返回多个值,会将多个值放在一个元组或者其他类型的集合中来返回。
程序运行结果:
【例4-4】编写函数实现求字符串中大写、小写字母的个数。
分析:需要返回大写、小写字母的个数,返回2个数,所以使用列表返回。
程序代码:
程序运行结果: