陆朝俊全套配套课件python Ch4

上传人:f****u 文档编号:123125130 上传时间:2020-03-08 格式:PPT 页数:46 大小:324.50KB
返回 下载 相关 举报
陆朝俊全套配套课件python Ch4_第1页
第1页 / 共46页
陆朝俊全套配套课件python Ch4_第2页
第2页 / 共46页
陆朝俊全套配套课件python Ch4_第3页
第3页 / 共46页
陆朝俊全套配套课件python Ch4_第4页
第4页 / 共46页
陆朝俊全套配套课件python Ch4_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《陆朝俊全套配套课件python Ch4》由会员分享,可在线阅读,更多相关《陆朝俊全套配套课件python Ch4(46页珍藏版)》请在金锄头文库上搜索。

1、模块化编程 模块化设计和建造 在对产品进行功能分析的基础上 将产品 分解成若干个功能模块 预制好的模块再 进行组装 形成最终产品 模块 提供特定功能的相对独立的单元 标准化 标准尺寸和标准接口 可组装 多个模块可以方便灵活地组合 可替换 改变系统的局部功能 可维护 对模块进行局部修改或设置 Lu Chaojun SJTU 2 模块化编程 将程序分解为独立的 可替换的 具有 预定功能的模块 每个模块实现一个功能 各模块组合在一起形成最终程序 好处 易设计 复杂问题化成简单问题 易实现 可以团队开发 易测试 可各自测试 易维护 增加模块 可重用 一个模块可参与组合不同程序 Lu Chaojun S

2、JTU 3 分离关注点 关注点 是指设计者关心的某个系统特性 或行为 分离关注点 SoC 将系统分解为互不重叠 的若干部分 每个部分对应于一个关注点 在模块化编程中 以程序的各个功能作为 关注点 模块划分就是分离关注点的结果 Lu Chaojun SJTU 4 编程语言中的模块化构造 汇编语言 子例程 宏 高级语言 函数 过程 有的语言不加区分 统称为函数 包 模块 函数库 类库 Lu Chaojun SJTU 5 Python函数 函数是一种程序构件 是构成大程序的小 功能部件 function一词本身就有 功能 的含义 我们已经熟悉的函数 Python内建函数 如abs Python库函数

3、 如math sqrt 模块化的程序是由许多函数组合而成的 Lu Chaojun SJTU 6 为什么需要函数 编程更容易把握 大程序分解成小功能部件 代码重用 避免重复相同 相似代码 提高开发效率 更易维护 程序更可读 更易理解 代码简洁美观 Lu Chaojun SJTU 7 函数用途 减少重复代码 编程实例 画一棵树 print print print print print print print print print print print def treetop print print print print def tree treetop treetop print prin

4、t print tree 重复代码的弊端 程序不必要地冗长 代码一致性维护麻烦 若修改一处代码 则 所有重复的地方都要一致地修改 程序看上去累赘不美观 输入大量重复代码很单调乏味 函数用途 改善程序结构 1 模块化 将程序分解成多个较小的相对独 立的函数 可使程序结构清晰 容易理解 def treetop print print print print def tree treetop treetop print print print tree def treetop print print print print def treetrunk print print print def ma

5、in treetop treetop treetrunk main 函数用途 改善程序结构 2 def treetop print print print print def treetrunk print print print def main treetop treetop treetrunk main def treetop1 print print print print def treetop treetop1 treetop1 def treetrunk print print print def main treetop treetrunk main 主程序结构清晰 函数用途

6、提高程序通用性 换用 字符来画树 以便比较美观度 def treetop1 print print print print def treetop2 print print print print def star treetop treetop1 treetop1 def caret treetop treetop2 treetop2 def treetop ch print s ch print s 3 ch print s 5 ch print s 7 ch def star treetop treetop treetop def caret treetop treetop treeto

7、p 利用函数参数 提高通用性 小结 函数的定义和调用 先定义 define 再通过函数名调用 调用时传递参数 调用执行的是函数体 语句序列 调用产生返回值 函数定义可置于程序中任何地方 但必须 在调用之前 Lu Chaojun SJTU 13 def func x y x x return y a func 2 函数调用过程 函数定义 def 函数调用 调用者暂停 函数形参被赋值为实参 执行函数体 控制返回调用者 调用点的下一条语句 函数调用过程图解 1 函数调用过程图解 2 函数调用过程图解 3 参数传递 对于函数定义 def f x y z 按位置传递 f 1 2 3 按名传递 形参 实参

8、 f x 1 z 3 y 2 实参可以是字面值 也可以是已赋值的变 量 f 1 a b 变量的作用域 变量具有作用域 scope 即可以引用该变量的程序区域 不同作用域中的变量 即使同名 也是不同的变量 作用域可以是局部 也可以是全局 函数中定义的变量是局部的 即作用域是函数体 函数的形参可视为局部变量 只不过是在调用时才赋值 x y 0 0 def f x y 1 print x y f x print x y 函数如何使用外部数据 Python中 函数体可直接引用外部的变量 x 0 def f y z 1 print x y z f 10 但这用法很不好 不符合模块化要求 应当通过参数向函

9、数传递数据 x 0 def f p y z 1 print p y z f x 10 f x y z x 全局变量 函数若需引用并修改外部变量 可声明全局变量 x 1 def f print x 未定义变量视为全局变量 x 2 赋值引入局部变量 则前行出错 f def h global x print x x 2 此赋值是针对全局变量的 print x h f x h x x 全局变量的用途 多个函数处理共享数据 def f global x x x 1 print x def g global x x x 1 print x x 0 f g 函数的返回值 函数与调用者之间的信息交互 通过形参

10、从调用者输入值 通过返回值向调用者输出值 定义 def return return计算各表达式 将结果返回调用者 退 出函数 函数返回值的使用 如果没有或者用不上函数返回值 则函数调用可 以直接当成一条语句 f 3 相当于某些语言中的 过程调用 如果想使用函数返回值 则有两种用法 用变量接收返回值 如 x f 3 print 2 x 4 直接用在表达式中 如 print 2 f 3 4 忘记接收函数返回值是Python初学者的常见错 误 函数返回值使用例 1 def sq x return x x sq 2 4 print sq 3 1 10 a 4 b sq a print b 16 函数返

11、回值使用例 2 求两点距离的函数 from math import sqrt def sq x return x x def dist u v d sqrt sq v 0 u 0 sq v 1 u 1 return d 用一个函数辅助定义另一个函数 这是化繁为 简的常用做法 函数返回值使用例 3 多个返回值的接收 def headtail list return list 0 list len list 1 用多个变量 h t headtail 1 2 3 4 5 print h t 1 5 用一个变量 接受的值是元组 v headtail 1 2 3 4 5 v 1 5 关于return return通常出现在函数末尾 因为函数一般都是 执行完所有步骤之后才能得出计算结果并返回 有时在函数到达末尾之前就终止执行并返回 def f x if x from moduletest import days days 1900 0 31 days 1900 1 28 完整程序 完整程序 calendar py 设计过程小结 自顶向下 逐步求精 将问题分解为若干子问题 为每个子问题设计一个 函数 接口 将原问题的算法用各子问题对应的函数接口 来表达 对每个子问题重复上述过程 自底向上实现 单元测试 Lu Chaojun SJTU 46 Lu Chaojun SJTU 46 End

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号