版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专题九函数[考纲要求]1.理解函数的概念;2.掌握提取代码并建立函数的方法。3.认识函数的定义格式;4.掌握函数的定义过程5.掌握函数的调用及参数传递;6.理解不同的参数分类对应不同的调用方式。7.理解变量作用域的概念8.了解局部变量和全局变量的差别9.学会定义局部变量和全局变量10.了解模块的导入11.掌握递归函数的应用12.了解高阶函数的简单使用[课时安排]2课时[知识梳理]函数的概念函数是指通过专门的代码组织,用来实现特定功能的代码段,它具有相对独立性,可供其他代码重复调用。前面其实已经接触过很多函数了,比如print函数,获取列表长度的len函数,用于删除对象的del函数等等。从代码角度来看,借助函数使代码逻辑可以得到优化(不能提升代码从程序员角度来看,借助函数可以提高代码def函数名([形式参数1,形式参数2…]):函数体数(简称形参),形参是可选的,形参必须放在圆括号内,形参之间用逗号分隔。函数体向右缩进(一般空4个空格),函数体是程序的处理;在函数体中可以使用return[表达式]来返回函数的值,如果未使用return语句,系统则默调用函数时,输入函数名并在后面的圆括号内传入实际参数(简称实参),多个参数之间用函数名()【示例】判断列表[16,27,53,78]中哪些数能被4整除,哪些数能被6整除。defzc(n,m):ifn%m==0:print(f"{n}可以被{m}整长参数(元组类型和字典类型的不定长参数)在调用函数时,传递的参数必须与函数定义的参数一一对应(参数个数一致,位置一致)标准自定义函数中,函数调用时,参数默认采用按照位置顺序的方式deftest(name,age):print(f"我的名字{name},我的年纪{age}")test("张三",18)#我的名字张三,我的年纪18deftest(name,age,heigtest(age=18,name="张三",180)#SyntaxError:positionalargumentfollkeywordargument若考题中涉及到“无须考虑参数位置”等类型的提示语则指得就是关键字参数defhello(name,age=18):print(f"我的名字{name},我的年纪{age}")hello("张三")#我的名字张三,我的年纪18hello("张三",19)#我的名字张三,我的年纪19长参数。元组不定长参数就是将参数封装为元组,字典不定长参数deftest(name,age,*hobbys):print(f"我的名字{name},我的年纪{age}")ifhobbys:test("张三",18,"唱歌","跳舞","画画")字典不定长参数**kwargsdeftest(name,age,*hobbys,**info):print(f"我的名字{name},我的年纪{age}")ifhobbys:print()ifinfo:test("张三",18,"唱歌","跳舞","画画",height=180,weight=75)注意:不定长参数必须放在位置参数的最右端。总结:关键字参数、默认参数、不定长参数必须放在位置参数的最右端函数参数的调用方式形参和实参定义函数时所指定的形参并不是具有值的变量,它所起的作用类似于占位符,只有在调用函数时,调用函数将实参的值传递给被调用函数的形参,形参才具有确定的值。要正确地传递参数,一般要求形参和实参数目要相等,而且数据类型要保持兼容。局部变量和全局变量局部变量:在一个函数体或语句块内部定义的变量称为局部变量。局部变量的作用域就是定义它的函数体或语句块,只能在这个作用域内部对局部变量进行存取操作,而不能在这个作用域外部对局部变量进行存取操作。对于带参数的函数而言,其形参的作用域就是函数体。如果在函数外部引用函数的形参或函数体中定义的局部变量,则会出现NameError的错误全局变量:在所有函数外部定义的变量称为全局变量,它可以在当前模块范围中被所有函数引用。如果要在函数内部修改全局变量的值,则应使用global关键字对变量声明。deftest():使用关键字globaldeftest():函数参数的调用方式在python中,如果参数属于可变对象,则在函数内部对形参变量的修改会影响到函数外部接下来我们探讨一下什么是引用传递方式和值传递方式?1)值传递方式对被调用函数的形参变量重新分配存储空间,用于存放传递过来的实参变量而不会对调用函数中的实参变量产生影响。传入的参数是不可变数据类型。2)引用传递方式对被调用函数的形参变量分配存储空间,用于存储由调用函数传递过来的1.不可变数据类型的数据其实是复制了值再传deftest(a):据deftest1(x):可变数据类型作为默认参数的值时,调用函数时defdemo(newwitem,old_list=[]):defmain():函数模块的调用用户自定义模块就是用户自己编写的Python1导入模块方式1:import模块名1[as别名1],模块名2[as别名2],…2导入模块方式2:从模块里面导入函数1,函数2,…from模块名import函数1[,as别名1],函数2[,as别名1],...4从模块里面导入所有函数from模块名import*将tkinter模块里面的所有函数导入从tkinter模块里面导入ceil,floor函数frommathimportclambda函数(匿名函数)什么是匿名函数:匿名函数是指没有名称的函数,它只能包含一个表达式,而不能包含其他语句,该表达式的值就是函数的返回值。什么时候使用匿名函数:如果某项计算功能只需要临时使用一次而不需要在其他地方重复使用,则可以考虑通过定义匿名函数来实现这项功能。1.匿名函数的定义匿名函数通过关键字lambda来定义,因此也称为lambda函数其语法格式如:lambda参数参数列表中的参数之间用逗号分隔,冒号后面的表达式用于确定匿名函数的返回值,表达式的值就是匿名函数的返回值。2.匿名函数的调用在程序中可以将匿名函数赋值给一个变量,然后通过该变量来调用匿名函数。例如:8与标准函数类似,使用匿名函数时可以使用默认值参数和关键字参数,例如:3递归函数的特点:必须有一个明确的递归结束条件(基例),每当进规模相比上次递归都应有所减少;相比两次重复之间有紧密的联递归函数的要求:至少有一个基例(递归终止条件)【例1】键盘输入n,使用递归函数计算n以内的累加和n=eval(input("请输入n:"))defgetSum(n):ifn==0:【例2】使用递归函数打印出前20项斐波那契数列,每个数字之间空格隔开。deff(n):ifn<=2:高阶函数map(映射)函数是Python中常用的高级函数之一,其作用是对一个序列中的每个元素进行sequence是序列【例1】将lst=[1,2,3,4,5]里面的每个元素转为字符类型【例2】将lst=[1,2,3,4,5]里面的每个元素改为该数字的平方zip()函数(’拉链’函数)用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回zip对象。我们来看一下zip函数的案例:b=[4,5,6]print(list(zip(a,b)))#[(1,4),(2,5),(3,6)]print(tuple(zip(a,b)))#((1,4),(2,5)print(dict(zip(a,b)))print(set(zip(a,b)))#{(2print(list(zip(a,b)))#[(1,4),(defis_even(n):oldLst=[1,2,3,4,5,6,7,8,[限时练习]1.下面关于递归函数的描述,错误的是()。D.代码简洁但效率较低【解析】递归层次越深,函数调用栈的开销越大,执行效率反而降低。2.可变数据类型(如列表)作为函数的默认参数,多次调用时可能出现的问题是()。A.每次调用都会重新初始化默认参数B.默认参数会共享同一内存地址,导致数据累积C.函数无法正确接收参数D.语法错误【解析】默认参数在函数定义时仅初始化一次,后续调用会共享同一可变对象。3.关于全局变量和局部变量,下面说法正确的是()。A.函数内部可以直接修改全局变量B.局部变量作用域仅限于函数内部C.全局变量必须用global关键字声明后才能使用D.函数形参属于全局变量【解析】函数内部修改全局变量需用global声明,但直接引用无需声明。4.以下代码的输出结果是():deftest():D.报错5.下列关于函数的说法中,错误的是()。A.自定义函数时,函数参数和返回值是可选的C.一个函数中可以有多个return语句D.函数定义时,参数顺序无关紧要【解析】函数定义时,位置参数的顺序必须一一对应6.下列做法不会造成程序错误的是()。A.函数没有写returnB.函数没有参数D.函数有多个return【解析】函数定义和调用时,圆括号都不能省略。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮团餐协议合同范本
- 饭店摊位出租合同范本
- 黄金回收置换合同范本
- 黄金项链转让合同范本
- 签订门店合作合同范本
- 粮库维修工程合同范本
- 约定事项合作协议合同
- 经销起重设备合同范本
- 老旧院落改造合同范本
- 耗材配送协议返利合同
- 2025年CSCO胰腺癌诊疗指南解读
- 2024年昆山农村商业银行招聘笔试真题
- 2025年四川省自然资源投资集团有限责任公司招聘笔试参考题库附带答案详解
- 展会活动疫情防控措施及应急预案
- 安全经验分享:中石油触电事故安全经验分享
- 露天采石场安全风险分级管控资料
- 南京市2024-2025学年高二上学期期中学情调研测试语文试卷及答案
- 全国导游基础知识-第六章-中国古典园林建筑
- 大五人格与职业性格匹配研究
- 斜视手术课件
- 南京信息工程大学《数字图像处理Ⅱ》2023-2024学年期末试卷
评论
0/150
提交评论