Python项目开发教程 课件 第六章 函数_第1页
Python项目开发教程 课件 第六章 函数_第2页
Python项目开发教程 课件 第六章 函数_第3页
Python项目开发教程 课件 第六章 函数_第4页
Python项目开发教程 课件 第六章 函数_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python项目开发实用教程第六章:函数定义与调用掌握函数的创建语法与调用机制,理解代码复用的核心逻辑。参数与作用域深入学习位置参数、关键字参数及全局/局部变量的作用域规则。Lambda与进阶探索匿名函数的便捷性,提升代码的简洁度与执行效率。目录6.1函数的创建和调用函数的定义与调用函数的返回值处理6.2函数的参数位置、关键字与默认参数可变参数的使用6.3lambda匿名函数匿名函数的定义语法lambda函数实战示例6.4变量的作用域局部变量与全局变量nonlocal与global关键字实践与总结本章小结与习题练习项目实践:学业查询应用思政小故事科技伦理与社会责任程序员的职业素养6.1函数的创建和调用JavaScript编程基础核心模块函数的定义核心概念函数是组织好的、可重复使用的代码块,用于执行特定的任务,是编程中的基本构建块。定义关键字在Python中,使用def关键字来定义函数。命名规范函数名通常采用小写字母和下划线的组合,以提高代码的可读性。函数语法格式deffunction_name(parameters):"""函数文档字符串(可选)"""#函数体:执行具体逻辑function_suitereturn[expression]#可选返回值参数说明parameters:参数列表,可为空或包含一个或多个参数。参数顺序需与函数调用时传递的实参顺序一致(默认参数除外)。返回值说明:expression:可选的返回值表达式,类型不限(如整数、字符串、列表、字典等)。函数的定义示例example.pydefgreet():

print("Hello,World!")定义关键字使用def关键字声明函数的开始,这是Python定义函数的标准语法。函数名称定义函数名为greet,后续通过此名称调用函数。括号内可定义参数。函数体缩进部分为函数执行逻辑,这里使用print输出字符串。函数的返回值核心概念返回值是函数执行完毕后,返回给调用者的最终结果。它是函数与外部世界交互的重要桥梁,允许我们将计算结果传递出去。实现方式在编程语言中,通常使用return语句来指定返回值。该语句会立即终止函数的执行,并将指定的值返回给调用处。函数的返回值示例Python代码实现#定义一个名为add()的函数,它接收两个参数a和b,并返回它们的和defadd(a,b):returna+b#调用add()函数,并打印返回的结果result=add(3,5)print(result)代码逻辑解析定义函数add(a,b)接收两个参数a和b,使用return语句返回它们的和。调用函数并赋值传入实参3和5,函数计算后返回结果8,并赋值给变量result。输出结果执行print(result),控制台最终输出数字8。函数的调用核心定义函数调用本质上是执行函数体中封装的代码逻辑。当程序运行到调用语句时,会跳转到函数定义处执行其内部指令。调用语法最常用的调用方式是直接使用函数名后紧跟一对圆括号`()`。如果函数需要参数,则在括号内传入相应的值。函数的调用调用方式(1)直接调用:在脚本或交互式环境中直接执行函数。(2)嵌套调用:在一个函数内部调用另一个函数。(3)作为参数传递:将函数作为参数传递给其他函数(高阶函数)。调用函数时的注意事项(1)函数名需与定义时一致,区分大小写。(2)参数数量和类型需与函数定义匹配(可通过缺省参数、可变参数解决灵活性问题)。(3)调用后需处理返回值(若函数有返回值)。函数的调用示例Python代码示例defgreet():print("Hello,World!")

greet()定义函数(Definition)使用def关键字定义名为greet的函数,函数体内包含打印"Hello,World!"的逻辑。调用函数(Call)通过函数名加括号()的方式执行函数。此时程序会跳转到函数定义处执行代码。输出结果(Output)程序运行后,控制台将输出"Hello,World!",完成一次完整的函数调用流程。6.2函数的参数核心概念函数的参数是指在调用函数时传递给函数的值。它赋予了函数处理不同数据的能力,是实现函数灵活性和通用性的关键所在。参数的定义核心定义参数是指在调用函数时传递给函数的值,它是函数与外界交互的桥梁。功能价值通过参数,函数可以接收外部输入,从而实现逻辑复用,使代码更加灵活和通用。交互特性支持传递多个值,增强了函数的处理能力,使其能够应对更复杂的业务场景。核心作用参数是函数灵活性的关键,它打破了函数的封闭性,实现了数据的动态传递。必备参数核心定义与规则必备参数是函数调用时必须提供的参数,且需按照函数定义时的顺序依次传递。调用时参数的数量和类型必须与声明时完全一致,否则将会引发语法错误严格的顺序性参数传递依赖于定义时的先后顺序,位置错误会导致逻辑错误或运行异常。一致性调用时参数的数量和类型必须与声明时完全一致必备参数示例#定义一个简单的打印函数defprintme(str_input):"""打印任何传入的字符串"""print(str_input)return#正确调用:传递一个字符串参数printme("Hello,World!")#输出:Hello,World!#错误调用:未传递参数将导致TypeError#printme()#TypeError:printme()missing1requiredpositionalargument:'str_input'函数定义定义了一个简单的打印函数。参数传递调用时传入一个字符串参数。执行结果最终输出:Hello,World!。命名参数核心定义与特性命名参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值,也可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。在下例中,用命名参数调用printme()函数。参数名传递通过用参数的命名确定传入的参数值。顺序无关性可以跳过不传的参数或者乱序传参。命名参数示例#定义一个简单的打印函数defprintme(str_input):"""打印任何传入的字符串"""print(str_input)return#使用命名参数调用printme(str_input="Mycustomstring")#输出:Mycustomstring函数定义定义了一个简单的打印函数。关键字传参使用命名参数调用运行结果

输出:Mycustomstring缺省参数定义缺省参数是在函数定义时为参数指定默认值。调用时若未提供该参数,则使用默认值;若提供了参数,则覆盖默认值。注意事项(1)缺省参数必须位于必备参数之后。(2)调用时可选择性地覆盖默认值。缺省参数示例#定义一个带缺省参数的函数defprintinfo(name,age=35):"""打印姓名和年龄"""print(f"Name:{name}")print(f"Age:{age}")return#调用时覆盖默认值printinfo(name="Alice",age=25)#输出:Name:Alice/Age:25#调用时省略参数,使用默认值printinfo(name="Bob")#输出:Name:Bob/Age:35函数定义定义一个带缺省参数的函数。灵活的调用方式调用时覆盖默认值调用时省略参数,使用默认值不定长参数语法格式deffunctionname([formal_args,]*var_args_tuple):"函数_文档字符串"function_suitereturn[expression]不定长参数加了星号“*”的变量名会存放所有未命名的变量参数。选择不多传参数也可以,例如

:#定义一个接收不定长参数的函数defprintinfo(arg1,*vartuple):"""打印第一个参数和其余所有参数"""print("Firstargument:",arg1)print("Remainingarguments:")forvarinvartuple:print(var)return#调用时传递多个参数printinfo(10)#输出:Firstargument:10/Remainingarguments:(无)printinfo(70,60,50)#输出:Firstargument:70/Remainingarguments:60,50不定长参数执行结果:10706050不定长参数args位置参数功能:用于接收任意数量的位置参数返回:打包成一个元组(Tuple)场景:参数数量不确定且不需要指定名称时kwargs关键字参数功能:用于接收任意数量的关键字参数返回:打包成一个字典(Dictionary)场景:需要接收带名称的参数,如配置项传递不定长参数示例defadd(args):total=0fornuminargs:total+=numreturntotalresult=add(1,2,3)print(result)定义函数:参数收集使用*args语法,函数可以接收任意数量的位置参数,并将它们打包成一个元组。逻辑实现:遍历求和通过for循环遍历args元组,将所有传入的数字累加到total变量中。调用执行:灵活传参调用时传入1,2,3,函数内部自动处理并返回计算结果6。形参和实参形参形参全称是形式参数,在用def关键字定义函数时,函数名后面括号里写的变量称为形式参数。形参是函数内部的占位符,用于接收调用时传递的实参。实参实参全称为实际参数,是在程序调用函数时所提供的具体的值或变量称为实际参数。实参为形参提供具体数据,使函数能够执行特定逻辑。不定长参数在程序开发中,要先定义形参,再调用实参,例如

:#定义函数,x和y是形参defadd(x,y):returnx+y#调用函数,200和30是实参result1=add(200,30)#实参为具体数值print(result1)#输出:230#调用函数,使用变量作为实参a=10b=20result2=add(a,b)#实参为变量print(result2)#输出:30注意:(1)形参与实参的匹配基于位置或命名。(2)形参是函数的局部变量,仅在函数内部有效。6.3lambda匿名函数一种使用lambda关键字定义的轻量级、简洁的函数定义方式lambda匿名函数的定义定义核心lambda匿名函数是一种简单的函数定义方式,它使用lambda关键字定义,语法简洁,适用于简单的函数逻辑。语法简洁相比于传统的def定义方式,lambda表达式不需要函数名,代码行数更少,能够快速实现简单的功能逻辑。适用场景通常用于需要一个短小的函数而不想正式定义它的场景,比如作为高阶函数的参数传递,或在列表推导式中使用。lambda语法格式lambda[arg1[,arg2,.argn]]:expression参数说明arg1,arg2,...,argn:可选的参数列表,用于指定lambda函数接收的输入参数。expression:返回值表达式,必须是一个单行表达式,用于计算并返回lambda函数的输出结果。lambda匿名函数示例#定义一个lambda函数,用于计算两个数的和sum=lambdaarg1,arg2:arg1+arg2;#调用sum()函数,打印结果print"Valueoftotal:",sum(10,20)print"Valueoftotal:",sum(20,20)定义函数定义一个lambda函数,用于计算两个数的和。调用执行调用sum()函数。输出结果Valueoftotal:30Valueoftotal:406.4变量的作用域变量作用域决定了变量在程序中的有效范围与可见性,

是理解程序执行流程和数据隔离的关键。局部变量定义与位置局部变量是指在函数内部定义的变量,通常用于在函数执行期间临时存储数据。作用域限制其作用域仅限于函数内部,外部代码无法直接访问或修改该变量,保证了数据的封装性。生命周期随着函数的调用而创建,随着函数执行结束而销毁,不会占用额外的内存空间。使用场景常用于保存中间计算结果、循环计数器或函数内部的临时状态,避免命名冲突。局部变量注意事项(1)可访问性

:全局变量虽然定义在函数外,但在函数内也可以被调用和使用。(2)修改规则

:如果要在函数内部改变全局变量的值,必须使用global关键字进行声明。否则,Python会认为用户试图在函数内部创建一个新的局部变量,而不是修改全局变量。(3)新增全局变量

:如果在函数内部直接将一个变量声明为全局变量(即使用global关键字),而在函数外没有定义过该变量,则在该变量被调用并赋值后,它会被新增为全局变量。(4)变量屏蔽

:如果出现全局变量和局部变量同名的情况,那么在局部变量定义的那个函数中,局部变量会“屏蔽”全局变量,即只有那个局部变量是有效的。局部变量示例#局部变量示例defhq():X=3print(X)#在函数内部,X是有效的hq()#调用函数,输出3print(X)#在函数外部,X是无效的,会引发NameError异常定义与作用域变量x在函数内部定义,属于局部变量。它的作用域仅限于函数内部,外部无法访问。运行结果与错误调用函数会输出3。若尝试在函数外部执行print(x),Python解释器会抛出NameError,因为x未在全局作用域中定义。全局变量定义与作用域全局变量是在函数外部定义的变量,其作用域覆盖整个程序。它的生命周期贯穿程序运行的始终,不受函数调用栈的影响。访问与特性函数内部可以直接访问全局变量。通过全局变量,我们可以在程序的任何地方访问和修改数据,实现不同模块间的数据共享。核心要点总结全局变量的核心价值在于其广泛的作用域和数据共享能力,但在使用时需注意避免命名冲突和不可控的副作用,通常建议在必要时才使用。全局变量注意事项(1)可访问性

:全局变量虽然定义在函数外,但在函数内也可以被调用和使用。(2)修改规则

:如果要在函数内部改变全局变量的值,必须使用global关键字进行声明。否则,Python会认为要在函数内部创建一个新的局部变量,而不是修改全局变量。(3)新增全局变量

:如果在函数内部直接将一个变量声明为全局变量(即使用global关键字),而在函数外没有定义过该变量,则在该变量被调用并赋值后,它会被新增为全局变量。(4)变量屏蔽

:如果出现全局变量和局部变量同名的情况,那么在局部变量定义的那个函数中,局部变量会“屏蔽”全局变量,即只有那个局部变量是有效的。全局变量示例#全部变量示例x=5#全部变量defhs1():print(x,end="")#在函数内部访问全局变量defhs2():globalx#在函数内部改变全局变量的值,必须先

用global关键字声明x=x+1print(x,end="")hs1()#调用函数,输出5hs2()#调用函数,输出6(因为x被修改了)print(x,end="")#在函数外部访问全局变量,输出6全局变量定义在函数外部定义的变量x=5属于全局变量,它的作用域覆盖整个程序。函数内部访问当调用hs1()时,函数内部有定义同名局部变量,因此会自动查找并使用全局变量x的值。当调用hs2()时,在函数内部改变全局变量的值,必须先用global关键字声明输出结果程序最终会输出:566

globals()和locals()函数在Python中,globals()和locals()函数可以根据调用位置的不同,返回全局和局部命名空间里的名字。这两个函数对于理解变量作用域和调试代码非常有用。如果在函数内部调用locals(),返回的是所有能在该函数里访问的局部命名(即局部变量);如果在函数内部调用globals(),返回的是所有能在该函数里访问的全局命名(即全局变量)。两个函数的返回类型都是字典,因此返回的名字可以用keys()函数来提取和查看。本章小结函数的创建和调用使用def关键字定义函数,使用函数名加括号的方式调用函数,实现代码的封装与复用。函数的参数掌握位置参数、关键字参数、默认参数及可变参数的灵活运用,提升函数的通用性。lambda匿名函数使用lambda关键字定义匿名函数,语法简洁,适用于简单的函数逻辑,提高代码效率。变量的作用域理解局部变量与全局变量的区别,熟练使用nonlocal和global关键字管理变量作用域。习题-选择题(1)1.用于定义函数的关键字是?A.functionB.defC.funcD.define答案:B解析:在Python中,用于定义函数的关键字是def。习题-选择题(2)2.用于接收任意数量的位置参数的是?A.*argsB.**kwargsC.argsD.kwargs答案:A解析:用于接收任意数量的位置参数的是*args。习题-选择题(3)3.用于定义lambda匿名函数的关键字是?A.lambdaB.defC.funcD.function答案:A解析:用于定义lambda匿名函数的关键字是lambda。def用于定义普通函数,func和function并非Python的关键字。习题-选择题(4)4.在函数内部定义的变量,其作用域仅限于函数内部的是?A.全局变量B.局部变量C.静态变量D.实例变量答案:B解析:在函数内部定义的变量,其作用域仅限于函数内部的是局部变量。习题-编程题(1)题目要求定义一个名为“add”的函数函数需要接收两个参数函数返回这两个参数的和示例代码(Python)defadd(a,b):returna+b习题-编程题(2)题目要求:定义一个名为“sum_list”的函数,该函数接收一个列表作为参数,返回列表中所有元素的和。PythonExampledefsum_list(lst):total=0fornuminlst:total+=numreturntotal习题-编程题(3)题目要求定义一个lambda匿名函数,计算两个数的乘积。示例代码multiply=lambdaa,b:a*b项目实践:学业查询应用核心实践目标设计并实现一个完整的学业查询应用,作为课程知识的综合实践载体。关键功能实现重点运用函数封装思想,实现学生信息的高效查询、新增、修改及删除等核心管理功能。学业查询应用实现步骤(1)核心任务:定义学生信息列表结构构建应用的基础是数据结构的定义。我们需要创建一个结构化的列表来存储学生的关键信息,这是后续查询和展示功能的基石。学生姓名存储学生的真实姓名,用于身份标识学号信息唯一的数字标识,用于精准查询课程成绩存储各科分数,支持数值计算与排序学业查询应用实现步骤(2)核心功能:信息查询本阶段的核心任务是实现学生信息的精准检索功能。

用户输入学号后,系统将自动匹配并返回对应的学生姓名及各科成绩数据,确保数据的实时性与准确性。实现逻辑:数据交互前端接收用户输入的学号参数后端接口进行数据库查询操作封装并返回JSON格式的学生信息学业查询应用实现步骤(3)核心功能目标实现学生信息添加功能,构建完整的用户数据录入流程。

重点在于设计友好的表单界面,确保数据的准确性与完整性。数据流转结果将新录入的学生信息成功添加至学生信息列表中。

实现数据的持久化存储与实时展示,为后续的查询与管理打下基础。学业查询应用实现步骤(4)功能定位:信息修改核心目标是实现学生信息的动态更新,允许管理员或授权用户对已录入的学生数据进行修改操作,确保数据的准确性。实现逻辑:学号关联以“学号”作为唯一标识符(PrimaryKey),通过学号查询到对应记录,从而精准定位并修改该学生的具体成绩信息。核心操作:成绩更新提供可视化的表单界面,用户输入新的成绩数据,系统将更新数据库中对应学号的记录,确保数据同步无误。关键要点:数据校验在修改过程中增加数据合法性校验,防止非法输入,并记录操作日志,确保数据的完整性与安全性。学业查询应用完整代码students=[{"name":"张三","id":"001","score":90}]defsearch_student(student_id):forstudentinstudents:ifstudent["id"]==student_id:returnstudentreturnNo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论