1 / 74
文档名称:

Python第五章模块与函数课件.ppt

格式:ppt   大小:1,758KB   页数:74页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Python第五章模块与函数课件.ppt

上传人:rsqcpza 2022/8/4 文件大小:1.72 MB

下载得到文件列表

Python第五章模块与函数课件.ppt

文档介绍

文档介绍:Python语言编程导论
第五章 模块与函数
*
*
第1页,共74页。
内容提要
概述
函数
模块
综合举例
*
*
第2页,共74页。
一、概述
Python的程序由包、模块和函数组成。
函数是一段可重用共74页。
4、递归函数
(1)递归的概念
递归函数可以在函数主体内直接或间接地调用自己,即函数的嵌套是函数本身。
递归是一种程序设计方法,使用递归可以减少重复的代码,使程序变得简洁。
递归的过程分为两个阶段:递推和回归。
递归函数的原理:
第一阶段,递归函数在内部调用自己。每一次函数调用又重新开始执行此函数的代码,直到某一级递归程序结束。
第二阶段,递归函数从后往前返回。递归函数从最后一级开始返回,一直返回到第一次调用的函数体内。即递归函数逐级调用完毕后,再按相反的顺序逐级返回。
*
*
第20页,共74页。
(2)递归的实现
一个问题能否用递归实现,看其是否具有下面的特点:
需有完成任务的递推公式。
结束递归的条件。
编写递归函数时,程序中必须有相应的语句:
一个递归调用语句。
测试结束语句。先测试,后递归调用。
*
*
第21页,共74页。
例5-6:用递归方法求n!
递归公式:
1 n=1
n!=
n*(n-1)! n>1
例如,使用递归计算5!的过程:
*
*
第22页,共74页。
源程序及执行结果:
执行结果:
*
*
第23页,共74页。
例5-7:编程求出Fibonacci数列的第n项。
Fibonacci数列定义如下:
1 当n=1时
F(n)= 1 当n=2时
F(n-1)+F(n-2)当n>2时
假定求出第八项。
分析:Fibonacci数列的计算具备递归的条件。首先有递推公式F(n)=F(n-1)+F(n-2),第二有结束递归的条件即n=0或n=1时不再递归。
*
*
第24页,共74页。
源程序及执行结果:
执行结果:
*
*
第25页,共74页。
(3)递归的评价与消除递归
递归程序虽然易读、易编,但需要占用额外的内存空间,并且执行速度也受影响。
是否利用递归编程要看实际问题,如果要节约内存就用循环语句实现。若对内存要求并不高,可以用递归编程。
如果不用递归程序很难实现,则只能选择递归算法。
*
*
第26页,共74页。
5、lambda函数
Lambda函数用于创建一个匿名函数,函数名未和标识符进行绑定。
使用lambda函数可以返回一些简单的运算结果。
格式:
lambda 变量1,变量2…:表达式
功能:通常lambda赋值给一个变量,变量即可作为函数使用;也可以直接把lambda直接作为函数使用。
*
*
第27页,共74页。
例5-8:用lambda函数改造例5-5-3。
执行结果:
*
*
第28页,共74页。
例5-9:使用lambda定义求绝对值的匿名函数。
执行结果:
*
*
第29页,共74页。
6、Generator函数
Generator函数的作用是一次产生一个数据项,并把数据项输出。
格式:
def 函数名(参数列表):

yield 表达式
说明:Generator函数的定义与普通函数的区别只是在函数体内使用yield生成数据项。 Generator函数可以被for循环中遍历,且可以通过__next__()方法(Python 2是next方法)获得yield生成的数据项。
*
*
第30页,共74页。
例5-10:用三种方法求斐波那契(Fibonacci)数列的前N项
方法一:简单输出斐波那契數列前 N 项
执行结果:
*
*
第31页,共74页。
说明:
结果没有问题,但直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列。
要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 list(Python中的数据结构之一,是序列之一,由一组元素组成,值可改变。后续详细介绍)
*
*
第32页,共74页。
方法二:定义一个函数,返回一个列表,列表中包含了斐波那契數列前 N 项
执行结果:
*
*
第33页,共74页。
方法三:使用yield
执行结果:
*
*
第34页,共74页。
说明:
方法三与方法一相比,仅仅把 print b 改为了 yield b,就在保持简