大学Python程序设计《函数与模块》专题课件_第1页
大学Python程序设计《函数与模块》专题课件_第2页
大学Python程序设计《函数与模块》专题课件_第3页
大学Python程序设计《函数与模块》专题课件_第4页
大学Python程序设计《函数与模块》专题课件_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

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

文档简介

PYTHON程序设计函数与模块定义·参数·作用域·模块汇报人Python程序设计课程组日期2026年09月课程导览01为什么需要函数从重复代码到可复用逻辑02函数的基本用法定义、调用、返回值与文档03参数与作用域传参机制与变量可见范围04模块与包导入方式与代码组织复用05综合实战与练习案例演练与课后巩固CHAPTER01为什么需要函数把重复的逻辑收进一个名字里从痛点出发,理解函数的价值重复代码的困境同样的逻辑写三遍,就是三次犯错的机会核心问题:重复的代码

是维护成本的主要来源01隐患一代码变长真正重要的逻辑被淹没在大量重复代码中。02隐患二同步修改计算规则一旦调整,三处都要同步修改。03隐患三漏改难察觉漏改其中一处,结果悄悄出错且极难察觉。函数解决了什么问题把一段完成特定任务的代码装进一个名字里一次编写,多次调用省去重复劳动,逻辑只写一遍维护成本大幅降低修改只在一处定义,不用到处找代码自解释函数名直接说明意图,读代码更轻松便于测试可以单独验证一个函数是否正确内置函数初体验你其实早就在用函数了函数并不神秘,它们是你每天在用的工具,我们同样可以写出自己的函数数值类3项abs()取绝对值round()四舍五入pow()求幂序列类4项len()求长度max()最大值min()最小值sum()求和类型类4项int()整数转换float()浮点转换str()字符串转换list()列表转换CHAPTER02函数的基本用法先定义,后调用,一次编写多次使用掌握函数最核心的语法形态函数的定义语法def是定义一个函数的起点def与函数名def与函数名之间用

空格

隔开圆括号函数名后紧跟一对

圆括号,括号内写参数冒号行尾的

冒号

不可省略缩进函数体必须

缩进,通常为四个空格函数体必须

缩进,通常为四个空格示例思路定义一个求平均分的函数,接收一个成绩列表,返回平均值关键提醒关键:只定义不调用,函数不会执行调用与执行流程函数名加圆括号,就是一次调用1暂停当前代码运行到调用语句时2跳转到函数体按顺序执行内部语句3返回调用处遇到return或函数体结束4继续执行后续代码调用语句之后的代码定义是写菜谱函数体只是步骤说明调用才是真做菜一个函数可被调用任意多次,每次传入的数据可以不同return返回值return是把结果交回调用者的唯一出口用变量接住

结果=函数名(实参),才能把返回值真正拿到手返return返回值的核心要点作用把函数内部的计算结果交回给调用者用法用变量接住结果,形如

结果=函数名(实参)规则1没有

return

时,函数默认返回

None规则2return

之后的语句不会被执行误区1只打印不返回:函数里写

print,调用处拿到的仍是

None误区2忘记接收:调用时没有用变量接住返回值,结果就丢了多返回值与函数设计一个函数可以有多个出口,但职责只应有一个以元组为桥梁,用清晰职责化解多出口的复杂度返多返回值机制写法return

后写多个值,中间用逗号隔开本质返回的是一个

元组,调用处可用多个变量同时接收设三条设计建议建议1一个函数只做

一件事,名字用动词开头建议2尽量通过

return

返回结果,而不是在函数里直接打印建议3参数不宜过多,超过

五个

时考虑重新拆分逻辑反例警示:把函数写成上百行,包揽所有功能函数文档字符串函数写给自己看,也写给三个月后的自己看好习惯:函数写完立刻补上文档字符串写法三引号在函数体第一行用三引号写说明文字内容说明说明这个函数做什么、参数是什么、返回什么查看help用

help

加函数名,或读取函数的文档属性推荐写法1一句话概括第一行一句话概括功能2列出参数含义空一行后列出参数含义3说明返回值最后说明返回值的意义CHAPTER03参数与作用域参数是入口,返回值是出口理解函数内部的数据流动规则位置参数与默认参数参数的顺序,决定了数据的对应关系规则红线:默认参数必须放在位置参数之后位位置参数调用按顺序一一对应,顺序错了结果就错示例函数定义了两个参数,调用时也必须按顺序给两个值默默认参数定义定义时直接给参数赋值,调用时可以省略语法函数名后括号内,先写普通参数,再写带等号默认值的参数好处常用取值可以省去重复书写关键字参数与可变参数参数可以灵活,但顺序不能乱键关键字参数写法调用时写明参数名等于值特点顺序自由,可读性更好位可变位置参数接收接收任意多个位置参数打包打包成元组字可变关键字参数接收接收任意多个关键字参数打包打包成字典用应用场景示例写一个能对任意多个数字求和的函数口诀顺序:位置参数、默认参数、可变位置参数、可变关键字参数参数传递机制传进去的不是数据本身,而是数据的引用两类对象在函数内被修改时,表现截然不同两类对象的不同表现2类不可变对象数字·字符串·元组函数内修改不影响外部可变对象列表·字典函数内修改外部同步变化02典型现象与防护复制一份再操作,外部才不受影响示例思路:往传入的列表追加元素,外部列表跟着变了防护建议:若不想影响外部数据,函数内先复制一份再操作变量作用域查找规则变量在哪里可见,由作用域说了算局部函数内部定义,函数外无法访问嵌套外层函数定义,内层函数可读取全局模块顶层定义,函数内部可以读取内置Python预定义,任何位置可用global与nonlocal能改,不代表应该改更好做法数据通过参数传入,结果通过

return传出判断标准:函数可不依赖外部变量单独测试使用忠告:global会破坏函数的独立性,非必要不使用global作用范围函数内修改全局变量典型场景全局计数变量在函数内累加nonlocal作用范围嵌套函数内修改外层函数变量典型场景闭包中更新外层状态常见陷阱与最佳实践踩过的坑,才是真的学会默认参数累积可变对象作默认参数,多次调用结果会意外累积可变参数被污染函数内直接修改可变参数,污染了调用方的数据变量同名混淆局部变量与全局变量同名,造成阅读与调试困难三条最佳实践规范·健壮01可变类型的默认值先写

None,函数内再判断初始化02函数尽量做到

输入确定、输出确定,不依赖外部变量03变量命名清晰,避免与内置函数同名,如

list、sumCHAPTER04模块与包让代码可以跨文件、跨项目复用从函数走向模块化的代码组织模块的概念与来源一个模块,就是一包被命名整理好的代码模块的本质与目的2项本质模块就是一个

.py文件,内部可以包含函数、变量和可执行代码目的把代码按功能拆分,实现跨文件复用本质目的三种来源1/2标准库Python自带,如

math、random第三方库由社区开发,安装后即可使用来源三种来源2/2自定义模块自己编写的

.py文件对应关系模块名就是文件名去掉

.py

后缀补充模块的四种导入方式导入方式不同,代码的清晰度就不同方式一:import模块名写法:import模块名,使用时需写成模块名.函数名来源清晰方式二:from模块import函数名写法:from模块import函数名,可直接写函数名调用调用简便方式三:import模块名as别名写法:import模块名as别名,适合名字较长或避免冲突避免冲突方式四:from模块import*写法:from模块import*,导入全部内容不推荐数学与随机模块常用的数学与随机能力,Python已经备好导入模块后,用模块名点函数名的方式调用数学模块mathsqrt()开平方ceil()向上取整pi圆周率常量典型用途计算几何问题中的距离与面积随机模块randomrandom()生成随机小数randint()生成随机整数choice()随机选择典型用途模拟掷骰子,生成1至6之间的整数系统与时间模块与操作系统和时间的交互,同样有现成模块先查文档,再写代码,不必死记所有函数;用

help

加模块名即可查看模块内的全部可用内容。先查文档,再写代码,不必死记所有函数系统模块文件系统交互获取当前目录、列出目录文件解释器模块Python运行环境查看版本信息日期模块处理日期时间获取今天的日期时间模块与时间相关获取当前时间戳自定义模块与运行判断自己写的函数,也能变成别人可用的模块📦自定义模块做法把相关函数写进一个

.py

文件,例如

tools.py使用在同目录下导入该模块,即可调用其中的函数内置变量与惯用写法内置变量每个模块都有内置变量

__name__直接运行值是

__main__被导入时值是模块名本身惯用写法把测试代码放进以

__name__

作为判断条件的代码块中好处模块被导入时,测试代码不会被执行包与第三方库模块之上还有包,代码组织可以再上一层包的结构与导入包装着多个模块的文件夹,便于分类管理标识包内通常有一个

__init__.py

文件导入导入包中的模块:先写包名,再写模块名第三方库使用建议原则优先使用标准库,减少外部依赖落地引入第三方库时,注意记录依赖清单提醒安装与版本管理是项目协作中的必备环节CHAPTER05综合实战与练习把知识用起来,才算真正学会案例演练与课后巩固综合案例:成绩统计一个大问题,拆成几个小函数就清楚了输入若干学生的姓名与三门课成绩,输出每人的平均分和班级排名需求1项需求描述输入若干学生的姓名与三门课成绩,输出每人的平均分和班级排名拆分思路3步函数1计算个人平均分,接收成绩列表函数2按平均分排序,接收学生数据主程序负责读取数据、调用函数、打印结果体会2条主程序变短,逻辑分散到小函数里每个函数都能单独测试,出错时容易定位综合案例:模块化重构把函数放进文件,程序就变成了项目模块化重构按职责拆分文件,让每个模块各司其职从写一个程序进阶到组织一个项目工具函数文件专门负责计算与排序可在其他项目中直接复用主流程文件通过导入使用这些函数多人协作时不同模块可并行开发常见错误排查报错不是敌人,是带着行号的地图第1步先读报错信息的最后一行确认错误类型›第2步再回到提示的行号检查该行代码›第3步必要时在函数内加打印观察中间结果缩进错误函数体缩进不一致,检查是否统一使用四个空格。名称错误函数名或变量名拼错,或未定义就使用。类型错误参数个数或类型不匹配,核对调用与定义的对应关系。返回值是None多半是函数里只写了打印,没写

return。课后练习看懂和写出来,中间隔着一遍练习先写出功能,再补文档字符串,最后考虑命名优化基础题2题写函数

is_even(n)判断一个数是否为偶数1写函数

max_of_three(a,b,c)返回三个数中的最大值2进阶题2题写函数

count_words(text)统计字符串中的单词个数3用随机模块写一个猜数字小游戏综合运用输入、判断与循环4挑战题1题把自己写过的一段重复代码重构为函数并单独建模块5完成建议先写出功能→再补文档字符串→最后考虑命名优化学习要点回顾把知识串

温馨提示

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

评论

0/150

提交评论