Python程序设计课件第5章Python函数.pptx

上传人(卖家):晟晟文业 文档编号:3713857 上传时间:2022-10-06 格式:PPTX 页数:59 大小:450.22KB
下载 相关 举报
Python程序设计课件第5章Python函数.pptx_第1页
第1页 / 共59页
Python程序设计课件第5章Python函数.pptx_第2页
第2页 / 共59页
Python程序设计课件第5章Python函数.pptx_第3页
第3页 / 共59页
Python程序设计课件第5章Python函数.pptx_第4页
第4页 / 共59页
Python程序设计课件第5章Python函数.pptx_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数第5章 Python函数参考书目Python 程序设计 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用这

2、里说明图片内容 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 函数的定义和调用1 定义函数函数函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段,是组织好的,可重复使用的,用来实现单一或相关联功能的代码段,它能够提高应用的模块化和代码的重复利用率。它能够提高应用的模块化和代码的重复利用率。PythonPython安装包、标准库中自带的函数统称

3、为安装包、标准库中自带的函数统称为内置函数内置函数,用户自己编写的,用户自己编写的函数称为函数称为自定义函数自定义函数,不管是哪种函数,其定义和调用方式都是一样的。,不管是哪种函数,其定义和调用方式都是一样的。函数的定义和调用1 定义函数【例】定义一个打印信息的函数def printInfo():定义一个函数,能够完成打印信息的功能。print(-)print(不忘初心,牢记使命 )print(-)def 函数名(参数列表):函数注释字符串函数体 如果有多个参数,各参数间使用逗号“,”分隔;函数没有参数时也必须保留一对空的小括号“()”;如果函数有返回值,可以使用return语句返回;不带表达

4、式的return相当于返回None;函数体和注释相对于def关键字必须保持一定的缩进。函数要有三个重要元素:函数名,以及函数参数和返回值。定义函数的基本格式如下:函数的定义和调用2 调用函数定义了函数之后,就相当于有了一段具有某些功能的代码,想要让这些代码能够执行,需要调用它。【例】调用5.2.1节中的printlnfo函数。printInfo()运行结果:-不忘初心,牢记使命 -函数名称(函数参数)函数名称:要调用的函数名称必须是己经创建好的。可选参数:如果需要传递多个参数值,则各参数值间使用逗号“,”分隔。如果该函数没有参数,则直接写()。函数的定义和调用3 函数的返回值“返回值”,就是程

5、序中的函数完成一件事情后,最后给调用者的结果【例】return语句应用示例:定义一个两个数相加的函数#定义函数def add2num(a,b):c=a+b return c print(函数运行中)#调用函数sumValue=add2num(2,3)print(sumValue)运行结果:5return valuereturn作用:1.负责函数返回值。2.退出当前函数:导致return下方的所有代码(函数体内部)不执行。函数的定义和调用3 函数的返回值一般情况下,每个函数都有一个return语句,如果函数没有定义返回值,那么返回值就是None.返回值返回值个数个数返回值返回值类型类型0 0No

6、ne1 1Object大于大于1 1Tuple如果一个函数要有多个返回值,可以采取“return a,b”写法,返回多个数据的时候,默认是元组类型。return后面也可以连接列表、元组或字典,以返回多个值。函数的定义和调用4 函数的嵌套调用在一个函数中调用了另外一个函数,这就是函数嵌套调用。其执行流程为如果函数A中,调用了另外一个函数B,则执行函数B中的任务后再回到上次函数A执行的位置。【例】函数的嵌套调用示例。#计算三个数之和def sum_num(a,b,c):return a+b+c#求三个数平均值def average_num(a,b,c):sumResult=sum_num(a,b,

7、c)return sumResult/3result=average_num(1,2,3)print(result)运行结果:2.0 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 函数的参数与值传递1 函数的形参和实参 在定义函数时,函数名后面括号中的参数 在函数内部使用的,函数外部并不可见。形式参数 在调用一个函数时,函数名后面括号中的参数 函数的调用

8、者提供给函数的参数实际参数值传递和引用传递的基本区别:进行值传递后,改变形式参数的值,实际参数的值不变 进行引用传递后,改变形式参数的值,实际参数的值也一同改变。函数的参数与值传递 4 默认参数【例】定义一个名称为printString的函数,然后为printString函数传递一个字符串类型的变量作为参数(代表值传递),并在函数调用前后分别输出该字符串变量,再为printString函数传递列表类型的变量作为参数(代表引用传递),并在函数调用前后分别输出该列表。#定义函数def printString(obj):print(原值:,obj)obj+=obj#调用函数print(-值传递-)s

9、trslogan=不忘初心,牢记使命print(函数调用前:,strslogan)printString(strslogan)#采用不可变对象:字符串print(函数调用后:,strslogan)print(-引用传递-)listslogan=不忘初心,牢记使命print(函数调用前:,listslogan)printString(listslogan)#采用可变对象:列表print(函数调用后:,listslogan)运行结果:-值传递-函数调用前:不忘初心,牢记使命原值:不忘初心,牢记使命函数调用后:不忘初心,牢记使命-引用传递-函数调用前:不忘初心,牢记使命原值:不忘初心,牢记使命函数调

10、用后:不忘初心,牢记使命,不忘初心,牢记使命函数的参数与值传递2 位置参数位置参数也称必备参数,调用函数时根据函数定义的参数位置来传递参数。数量必须与定义时一致位置必须与定义时一致def division(num_one,num_two):print(num_one/num_two)division(6,2)函数的参数与值传递3 关键字参数关键字参数是指使用形式参数的名字来确定输入的参数值。函数调用,通过“键=值”形式加以指定。【例】关键字参数应用示例。def user_info(name,age,gender):print(f您的名字是name,年龄是age,性别是gender)user_i

11、nfo(Rose,age=20,gender=女)user_info(huayi,gender=男,age=6)运行结果:您的名字是Rose,年龄是20,性别是女您的名字是huayi,年龄是6,性别是男函数的参数与值传递 4 默认参数定义函数时可以指定形式参数的默认值。调用函数时,可分为以下两种情况:使用参数的默认值未给默认参数传值使用实际参数的值给默认参数传值def 函数名(,参数n=默认值):函数注释字符串函数体默认值放最后函数的参数与值传递 4 默认参数【例】函数定义时设置默认参数,调用时验证其功能。def printinfo(name,age=100):#打印任何传入的字符串 prin

12、t(Name:,name)print(Age:,age)#调用printinfo函数printinfo(name=cau)printinfo(name=cau,age=110)运行结果:Name:cauAge:100Name:cauAge:110函数的参数与值传递5 不定长可变参数不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。def 函数名(formal_args,*args,*kwargs):函数_文档字符串 函数体 return语句*argsargs和和*kwargskwargs都都是不定长参数是不定长参数,它们它们可可搭配使用,亦可单搭配使用,亦可单

13、独使用。独使用。函数的参数与值传递5 不定长可变参数1.*args形式这种形式表示接收任意多个实际参数并将其放到一个元组中。def test(*args):print(args)test(1,2,3,a,b,c)(1,2,3,a,b,c)函数的参数与值传递5 不定长可变参数2.*kwargs形式*kwargs这种形式表示接收任意多个类似关键字参数一样显式赋值的实际参数,并将其放到一个字典中。def test(*kwargs):print(kwargs)test(a=1,b=2,c=3,d=4)c:3,d:4,a:1,b:2函数的参数与值传递6 可变参数的装包与拆包装包:把未命名参数和命名参数分

14、别放在元组或者字典中。拆包:将一个序列类型的数据拆开为多个数据,分别赋值给变量,位置对应。-用于接收多余的未命名参数-元组类型*args参数*kwargs参数-用于接收形参中的命名参数-字典类型函数的参数与值传递6 可变参数的装包与拆包【例】参数*agrs装包与拆包过程示例。def run(a,*args):#第一个参数传给了a print(a)#args是一个元组,里面是第2和3两个参数 print(args)#*args是将这个元组中的元素依次取出来 print(对args拆包)print(*args)#*args 相当于 a,b=args print(将未拆包的数据传给run1)run1

15、(args)print(将拆包后的数据传给run1)run1(*args)def run1(*args):print(输出元组)print(args)print(对元组进行拆包)print(*args)run(Rose,Tome,King)函数的参数与值传递6 可变参数的装包与拆包【例】参数*kwargs装包与拆包过程示例。def run(*kwargs):#传来的 key=value 类型的实参会映射成kwargs里面的键和值#kwargs是一个字典,将未命名参数以键值对的形式 print(kwargs)print(对kwargs拆包:)#此处可以把*kwargs理解成对字典进行了拆包,k:

16、2,v:4的kwargs字典又#被拆成了k=2,v=4传递给run1,但是*kwargs是不能像之前*args那样被打印出来看的 run1(*kwargs)#print(*kwargs)def run1(k,v):#此处的参数名一定要和字典的键的名称一致 print(k,v)run(k=2,v=4)运行结果:k:2,v:4对kwargs拆包:2 4 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及

17、其应用生成器及其应用目录这里说明图片内容 变量的作用域1 LEGB原则“LEGB”即Python中四层作用域范围如下,:变量的作用域是指变量的作用范围。根据作用范围,Python中的变量分为局部变量与全局变量。第一层是第一层是L(local),表示变量在一个函数定义中,而且在这个函数里面,表示变量在一个函数定义中,而且在这个函数里面没有再包含函数的定义没有再包含函数的定义第二层是第二层是E(enclosing function),表示变量在一个函数定义中,但这个函,表示变量在一个函数定义中,但这个函数里面还包含有函数的定义数里面还包含有函数的定义第三层是第三层是G(global),表示一个模块

18、的命名空间,也就是说变量在一,表示一个模块的命名空间,也就是说变量在一个个.py文件中,且在函数或类外构成的一个空间,这一层空间对应的全文件中,且在函数或类外构成的一个空间,这一层空间对应的全局范围局范围第四层是第四层是B(builtin),表示变量在,表示变量在Python解释器启动时就已经加载到当解释器启动时就已经加载到当前编程环境中的范围前编程环境中的范围变量是采用LEG-LEG-BB的规则查找,即先是在局部中查找,如果找不到,便去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建命名空间中找。变量的作用域2 全局变量和局部变量1.局部变量局部变量是指在函数内部定义并使用的变量

19、,它只在函数内部有效。作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。【例】局部变量的使用def test1():num=100 print(test1中的num值为:%d%num)def test2():num=200 print(test2中的num值为:%d%num)#函数调用test1()test2()运行结果:test1中的num值为:100test2中的num值为:200变量的作用域2 全局变量和局部变量2.全局变量全局变量可以在整个程序范围内访问。有以下两种情况:(1)在函数外定义变量如果一个变量在函数外定义,那么不仅可在函数外可以访问,在函数内也可以访问到

20、。result=100#全局变量def sum(a,b):result=a+b#局部变量 print(函数内的result的值为:,result)#result在这里是局部变量 return result#调用sum函数sum(100,200)print(函数外的变量result是全局变量,等于,result)运行结果:函数内的result的值为:300函数外的变量result是全局变量,等于 100变量的作用域2 全局变量和局部变量(2)在函数体内定义变量在函数体内定义,并且使用global关键字修饰后,该变量也就变为全局变量。在函数体内还可以对其进行修改。【例】global关键字的应用a=

21、100def test():global a a+=100 print(a)test()运行结果:200在函数内部定义的变量即使与全局变量重名,也不影响全局变量的值。函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 递归函数和匿名函数1 递归函数如果一个函数在内部不调用其他的函数,而是调用自身的话,这个函数就是递归函数。【例5-19】应用递归函数计算5!。r

22、educe(lambda x,y:x+y,1,2,3,4)执行步骤:先将1,2传入:1+2=3再将3,3传入:3+3=6再将6,4传入:6+4=10最终结果为:10递归函数和匿名函数1 递归函数递归函数具有如下特征:递归的递推(调用)和回归(返回)过程,跟入栈和出栈类似递归回归结束条件即终止条件,用于终止递归。结束条件递归函数和匿名函数2 匿名函数匿名函数(lambda)是指没有名字的函数,即不再使用def语句定义的函数。通常情况下,这样的函数只使用一次。【例】匿名函数的应用。sum=lambda arg1,arg2:arg1+arg2#调用sum函数print(运行结果:,sum(10,20

23、)print(运行结果:,sum(20,20)result=lambda arg1,arg2,.,argn:expression运行结果:运行结果:30运行结果:40用途-指定短小的回调函数-作为内置函数的参数 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 高阶函数高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数。def add

24、_num(a,b):return abs(a)+abs(b)result=add_num(-1,2)print(result)运行结果:3利用函数定义调用方式,求和的方法1def sum_num(a,b,f):return f(a)+f(b)result=sum_num(-1,2,abs)print(result)运行结果:3利用定义高阶函数,求和的方法2方法2的代码会更加简洁,函数灵活性更高。函数式编程大量使用函数,减少了代码的重复减少了代码的重复。闭包及其应用1 内置高阶函数:map()map函数:根据提供的函数对指定的序列做映射。将传入的函数变量func作用到iterables变量的每个

25、元素中,并将结果组成新的迭代器返回。map(func,*iterables)-map object【例】对于list 1,2,3,4,5,6,7,8,9的每个元素都作平方,只需要向map()函数传入函数f(x)=x*x即可。#1.准备列表数据list_01=1,2,3,4,5,6,7,8,9#2.准备2次方计算的函数def f(x):return x*x#3.调用mapresult=map(f,list_01)#4.验收成果print(list_01)print(result)print(list(result)运行结果:1,2,3,4,5,6,7,8,91,4,9,16,25,36,49,6

26、4,81闭包及其应用2内置高阶函数:reduce()reduce()函数:实现对func计算的结果继续和序列的下一个元素做累积计算。reduce(function,iterable,initializer)用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算。reduce(lambda x,y:x+y,1,2,3,4)执行步骤:先将1,2传入:1+2=3再将3,3传入:3+3=6再将6,4传入:6+4=10最终结果为:10闭包及其应用2内置高阶函数:reduce()【例】reduce()的应用示例#

27、1.导入模块from functools import reduce#2.定义功能函数def myadd(x,y):return x+y#3.调用reduce,作用:功能函数计算的结果和序列的下一个数据做累计计算sum=reduce(myadd,(1,2,3,4,5,6,7)print(sum)运行结果:28reduce()函数被放置在fucntools 模块里,使用前要先引入模块闭包及其应用3 内置高阶函数:filter()fliter()函数:对指定的序列执行过滤操作。其接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter(

28、)根据判断结果自动过滤掉不符合条件的元素。filter(function,iterable)-filter object【例5-25】要从一个list 1,4,6,7,9,12,17中删除偶数,保留奇数。list1=1,4,6,7,9,12,17#1.定义功能函数:过滤序列中的偶数def is_odd(x):return x%2=1#2.调用filter,利用filter()过滤掉偶数print(list(filter(is_odd,list1)运行结果:1,7,9,17 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函

29、数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 闭包及其应用1函数的引用采用不同的方式函数的调用,所起到的功能也不同。def infoout():print(Work hard!)infoout()print(infoout)运行结果:Work hard!使用“infoout()”和“infoout”是不同的,前者表示调用infoout()函数,执行函数中的代码,而后者是引用的函数块闭包及其应用2闭包概述若每次在某变量的基础上和其它数字进行求和计算,怎么办?闭包闭包可解决这个

30、需求。闭包条件:1)在函数嵌套(函数里面再定义函数)的前提下。2)内部函数使用了外部函数的变量(还包括外部函数的参数)。3)外部函数返回了内部函数。#1.函数嵌套def outer(num1):#外部函数 def inner(num2):#内部函数#2.内部函数必须使用了外部函数的变量 print(num1+num2)#外部函数返回了内部函数,这里返回的内部函数就是闭包 return innerinner函数就是一个闭包闭包及其应用2闭包概述print(outer(10)#创建闭包实例outer_new=outer(10)#执行闭包outer_new(20)运行结果:function oute

31、r.inner at 0 x00000000021E66A830闭包及其应用3闭包的应用闭包主要在面向对象、装饰器以及实现单例模式三个方面应用居多。【例5-28】利用闭包计算函数式:y=ax+b的函数值。def calc_y(a,b):def calc(x):print(a*x+b)return calccalc_1=calc_y(2,5)calc_2=calc_y(6,8)calc_1(2)calc_2(3)运行结果:926闭包具有提高代码可复用提高代码可复用性性的作用 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函

32、数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 装饰器及其应用1装饰器的概念python装饰器(Fuctional Decorators)是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。import timedef timeit(func):def result():start_time=time.time()func()end_time=time.time()print(函数运行时间为:%.2fs%(end_time-star

33、t_time)return result【例】利用装饰器实现统计函数执行时间。timeitdef func_0():time.sleep(3)#省略4个timeitdef func_5():time.sleep(3)#调用函数func_0()func_5()运行结果:函数运行时间为:3.00s函数运行时间为:3.00s装饰器及其应用2装饰器的应用1.无参数的装饰器应用import time#装饰器def timeit(func):#func为装饰器绑定的方法(绑定装饰器后自动传入)def result():start_time=time.time()func()#调用test方法 end_ti

34、me=time.time()print(函数运行时间为:%.2fs%(end_time-start_time)return result#返回result方法【例】利用测试函数运行时间的应用,演示无参数的装饰器应用。timeit#添加装饰器def test():time.sleep(1)print(函数运行测试)test()#调用函数运行结果:函数运行测试函数运行时间为:1.00s装饰器及其应用2装饰器的应用2.有参数的装饰器应用import timedef timeit(func):#func为装饰器绑定的方法(绑定装饰器后自动传入)def result(arg1):#传入test方法的参数

35、 start_time=time.time()func(arg1)#调用test方法 end_time=time.time()print(函数运行时间为:%.2fs%(end_time-start_time)return result#返回result方法【例】利用测试函数运行时间的应用,演示有参数的装饰器应用。timeit#添加装饰器def test(mStr):time.sleep(2)print(函数运行时间:+mStr)test(传入参数)#调用函数运行结果:函数运行时间:传入参数函数运行时间为:2.00s装饰器及其应用2装饰器的应用3.装饰器既可以装饰带参函数也可以装饰不带参函数im

36、port time#装饰器def timeit(func):#func为装饰器绑定的方法(绑定装饰器后自动传入)def result(*arg1,*kwargs):#(传入非固定参数)这样即使装饰函数不带参数也可被装饰 start_time=time.time()func(*arg1,*kwargs)end_time=time.time()print(函数运行时间为:%.2fs%(end_time-start_time)return result#返回result方法【例】利用测试函数运行时间的应用,演示有或无参数的装饰器应用。timeit#添加装饰器def test():time.sleep

37、(2)print(函数运行)test()#调用函数运行结果:函数运行函数运行时间为:2.00s 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 迭代器及其应用1迭代器的概念1.迭代迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代

38、。loop=0while loop 3:print(loop)loop+=1【例】迭代应用示例。运行结果:012迭代器及其应用1迭代器的概念2.容器容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in,not in关键字判断元素是否包含在容器中。3.可迭代对象(Iterable)可迭代对象并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过_iter_()方法或_getitem_()方法访问。迭代器及其应用1迭代器的概念4.迭代器(Iterator)迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素。一个迭代器对

39、象必须是定义了_iter_()方法和next()方法的对象。让对象可以用for.in循环遍历时找到_iter_()方法让对象可以通过next(实例名)访问下一个元素。_next_()方法迭代器优点:节约内存、不依赖索引取值、实现惰性计算迭代器及其应用2迭代器的应用vList=1,2,3,4vIter=iter(vList)#从列表生成迭代器对象for i in vIter:print(第一次:,i)#输出迭代器中的数据1、2、3、4for i in vIter:print(第二次:,i)#再次输出没有数据,因为迭代器已经空了1.用forin方式访问迭代器迭代器及其应用2迭代器的应用s=唐僧,悟

40、空,悟能,悟净it=iter(s)try:while True:x=next(it)print(x)except StopIteration:print(遍历结束)2.用next方式访问 函数的定义和调用函数的定义和调用 函数的参数与值传递函数的参数与值传递 变量的作用域变量的作用域 递归函数和匿名函数递归函数和匿名函数 高阶函数高阶函数 闭包及其应用闭包及其应用 装饰器及其应用装饰器及其应用 迭代器及其应用迭代器及其应用 生成器及其应用生成器及其应用目录这里说明图片内容 生成器及其应用生成器的概念生成器是能够动态提供数据的可迭代对象。def 函数名():yield 数据for 变量名 in

41、函数名():语句含有yield语句的函数,返回值为生成器对象定义定义语法语法调用调用调用生成器函数将返回一个生成器对象,不执行函数体。yield翻译为“产生”或“生成生成”。生成器及其应用生成器的概念执行过程1)调用生成器函数会自动创建迭代器对象。2)在调用迭代器对象的_next_()方法时才执行生成器函数。3)每次执行到yield语句时返回数据,暂时离开。4)待下次调用_next_()方法时继续从离开处继续执行。生成迭代器对象的规则1)将yield关键字以前的代码放在next方法中。2)将yield关键字后面的数据作为next方法的返回值。本章小结本章主要针对函数进行了讲解函数的作用有提高应

42、用的模块性,最小化代码冗余以及流程分解,内容包括函数的定义、函数的调用、函数的参数、函数的返回值,函数的嵌套、递归函数、匿名函数、日期时间函数和随机数函数。函数作为关联功能的代码段,可以很好地提高应用的模块化,希望大家能用好这些函数,并学会查询相关的函数手册。思考与练习1.定义一个getMax函数,返回三个数(从键盘输入的整数)中的最大值。例如:请输入第1个整数:10请输入第2个整数:15请输入第3个整数:20其中最大值为:202.定义能够计算斐波那契数列的函数,并调用。3.回文数是一个正向和逆向都相同的整数,如123454321、9889。编写函数判断一个整数是否是回文数。4.编写函数,判断输入的三个数字是否能构成三角形的三条边。5.编写函数,求两个正整数的最小公倍数。思考与练习6.编写一个学生管理系统,要求如下。1)使用自定义函数,完成对程序的模块化。2)学生信息至少包含:姓名、性别及手机号。3)该系统具有的功能:添加、删除、修改、显示、退出系统。设计思路如下。1)提示用户选择功能操作。2)获取用户选择的功能。3)根据用户的选择,分别调用不同的函数,执行相应的功能。7.创建装饰器,要求如下:(1)创建add_log装饰器,被装饰的函数打印日志信息;(2)日志格式为:字符串时间 函数名:xxx,运行时间:xxx,运行返回值结果:xxx。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python程序设计课件第5章Python函数.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|