




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模块化编程模块化编程模块化设计和建造模块化设计和建造 在对产品进行功能分析的基础上在对产品进行功能分析的基础上,将产品将产品分解成若干个功能模块分解成若干个功能模块,预制好的模块再预制好的模块再进行组装进行组装,形成最终产品形成最终产品. 模块模块:提供特定功能的相对独立的单元提供特定功能的相对独立的单元. 标准化标准化:标准尺寸和标准接口标准尺寸和标准接口 可组装可组装:多个模块可以方便灵活地组合多个模块可以方便灵活地组合 可替换可替换:改变系统的局部功能改变系统的局部功能 可维护可维护:对模块进行局部修改或设置对模块进行局部修改或设置Lu Chaojun, SJTU 2模块化编程模块化编程
2、 将程序分解为独立的、可替换的、具有将程序分解为独立的、可替换的、具有预定功能的模块预定功能的模块,每个模块实现一个功能每个模块实现一个功能.各模块组合在一起形成最终程序各模块组合在一起形成最终程序. 好处好处: 易设计易设计:复杂问题化成简单问题复杂问题化成简单问题 易实现易实现:可以团队开发可以团队开发 易测试易测试:可各自测试可各自测试 易维护易维护:增加模块增加模块 可重用可重用:一个模块可参与组合不同程序一个模块可参与组合不同程序Lu Chaojun, SJTU 3分离关注点分离关注点 关注点关注点:是指设计者关心的某个系统特性是指设计者关心的某个系统特性或行为或行为 分离关注点分离
3、关注点(SoC):将系统分解为互不重将系统分解为互不重叠的若干部分叠的若干部分,每个部分对应于一个关注每个部分对应于一个关注点点. 在模块化编程中在模块化编程中,以程序的各个功能作为以程序的各个功能作为关注点关注点,模块划分就是分离关注点的结果模块划分就是分离关注点的结果.Lu Chaojun, SJTU 4编程语言中的模块化构造编程语言中的模块化构造 汇编语言汇编语言:子例程子例程,宏宏 高级语言高级语言:函数函数,过程过程 有的语言不加区分有的语言不加区分,统称为函数统称为函数. 包包,模块模块,函数库函数库,类库类库Lu Chaojun, SJTU 5Python函数函数 函数是一种程序
4、构件函数是一种程序构件,是构成大程序的小是构成大程序的小功能部件功能部件 function一词本身就有一词本身就有功能功能的含义的含义 我们已经熟悉的函数我们已经熟悉的函数:Python内建函数内建函数,如如abs()Python库函数库函数,如如math.sqrt() 模块化的程序是由许多函数组合而成的模块化的程序是由许多函数组合而成的.Lu Chaojun, SJTU 6为什么需要函数为什么需要函数? 编程更容易把握编程更容易把握 大程序分解成小功能部件大程序分解成小功能部件 代码重用代码重用,避免重复相同避免重复相同/相似代码相似代码 提高开发效率提高开发效率 更易维护更易维护 程序更可
5、读程序更可读,更易理解更易理解 代码简洁美观代码简洁美观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 # print # print # tree()重复代码的弊端重复代码的弊端 程序不必要地冗长程序不必要地
6、冗长 代码一致性维护麻烦代码一致性维护麻烦:若修改一处代码若修改一处代码,则则所有重复的地方都要一致地修改所有重复的地方都要一致地修改 程序看上去累赘不美观程序看上去累赘不美观 输入大量重复代码很单调乏味输入大量重复代码很单调乏味函数用途函数用途:改善程序结构改善程序结构(1) 模块化模块化:将程序分解成多个较小的相对独将程序分解成多个较小的相对独立的函数立的函数,可使程序结构清晰可使程序结构清晰,容易理解容易理解.def treetop(): print * print * print * print *def tree(): treetop() treetop() print # prin
7、t # print # tree()def treetop(): print * print * print * print *def treetrunk(): print # print # print # def main(): treetop() treetop() treetrunk()main()函数用途函数用途:改善程序结构改善程序结构(2)def treetop(): print * print * print * print *def treetrunk(): print # print # print # def main(): treetop() treetop() tre
8、etrunk()main()def treetop1(): print * print * print * print *def treetop(): treetop1() treetop1()def treetrunk(): print # print # print # def main(): treetop() treetrunk()main()主程序结构清晰主程序结构清晰函数用途函数用途:提高程序通用性提高程序通用性 换用换用字符来画树字符来画树,以便比较美观度以便比较美观度.def treetop1(): print * print * print * print *def tree
9、top2(): 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() treetop().利用函数参数利用函数参数提高通用
10、性提高通用性小结小结:函数的定义和调用函数的定义和调用 先定义先定义(define) 再通过函数名调用再通过函数名调用 调用时传递参数调用时传递参数 调用执行的是函数体调用执行的是函数体(语句序列语句序列) 调用产生返回值调用产生返回值 函数定义可置于程序中任何地方函数定义可置于程序中任何地方,但必须但必须在调用之前在调用之前Lu Chaojun, SJTU 13def func(x): y = x * x return ya = func(2)函数调用过程函数调用过程 函数定义函数定义def (): 函数调用函数调用() 调用者暂停调用者暂停 函数形参被赋值为实参函数形参被赋值为实参 执行函
11、数体执行函数体 控制返回调用者控制返回调用者(调用点的下一条语句调用点的下一条语句)函数调用过程图解函数调用过程图解(1)函数调用过程图解函数调用过程图解(2)函数调用过程图解函数调用过程图解(3)参数传递参数传递 对于函数定义对于函数定义def f(x,y,z): . 按位置传递按位置传递f(1,2,3) 按名传递按名传递:形参形参=实参实参f(x=1,z=3,y=2) 实参可以是字面值实参可以是字面值,也可以是已赋值的变也可以是已赋值的变量量f(1,a,b)变量的作用域变量的作用域 变量具有变量具有作用域作用域(scope):即可以引用该变量的程序区域即可以引用该变量的程序区域. 不同作用
12、域中的变量不同作用域中的变量,即使同名即使同名,也是不同的变量也是不同的变量! 作用域可以是局部作用域可以是局部,也可以是全局也可以是全局 函数中定义的变量是函数中定义的变量是局部的局部的:即作用域是函数体即作用域是函数体. 函数的形参可视为局部变量函数的形参可视为局部变量,只不过是在调用时才赋值只不过是在调用时才赋值.x,y = 0,0def f(x): y = 1 print x,yf(x)print x,y函数如何使用外部数据函数如何使用外部数据 Python中中,函数体可直接引用外部的变量函数体可直接引用外部的变量.x = 0def f(y): z = 1 print x,y,zf(1
13、0) 但这用法很不好但这用法很不好!不符合模块化要求不符合模块化要求. 应当通过参数向函数传递数据应当通过参数向函数传递数据x = 0def f(p,y): z = 1 print p,y,zf(x,10)f() xy,zx全局变量全局变量 函数若需引用并修改外部变量函数若需引用并修改外部变量,可声明可声明全局变量全局变量 x = 1 def f(): print x #未定义变量视为全局变量未定义变量视为全局变量 x = 2 #赋值引入局部变量赋值引入局部变量,则前行出错则前行出错! f() def h(): global x print x x = 2 #此赋值是针对全局变量的此赋值是针对
14、全局变量的 print x h()f() xh() xx全局变量的用途全局变量的用途 多个函数处理共享数据多个函数处理共享数据def f(): global x x = x + 1 print xdef g(): global x x = x 1 print xx = 0f()g() 函数的返回值函数的返回值 函数与调用者之间的信息交互函数与调用者之间的信息交互: 通过形参从调用者输入值通过形参从调用者输入值 通过通过返回值返回值向调用者输出值向调用者输出值 定义定义def (): return return计算各表达式计算各表达式,将结果返回调用者将结果返回调用者,退退出函数出函数函数返回值
15、的使用函数返回值的使用 如果没有或者用不上函数返回值如果没有或者用不上函数返回值,则函数调用可则函数调用可以直接当成一条语句以直接当成一条语句f(3) 相当于某些语言中的相当于某些语言中的过程调用过程调用 如果想使用函数返回值如果想使用函数返回值,则有两种用法则有两种用法 用变量接收返回值用变量接收返回值,如如x = f(3)print 2 + x * 4 直接用在表达式中直接用在表达式中,如如print 2 + f(3) * 4 忘记接收函数返回值是忘记接收函数返回值是Python初学者的常见错初学者的常见错误误函数返回值使用例函数返回值使用例(1) def sq(x): return x
16、* x sq(2)4 print sq(3) + 110 a = 4 b = sq(a) print b16 函数返回值使用例函数返回值使用例(2) 求两点距离的函数求两点距离的函数from math import sqrtdef sq(x): return x * xdef dist(u,v): d = sqrt(sq(v0-u0)+sq(v1-u1) return d 用一个函数辅助定义另一个函数用一个函数辅助定义另一个函数,这是化繁为这是化繁为简的常用做法简的常用做法.函数返回值使用例函数返回值使用例(3) 多个返回值的接收多个返回值的接收 def headtail(list): ret
17、urn list0,listlen(list)-1 用多个变量用多个变量 h,t = headtail(1,2,3,4,5) print h,t1 5 用一个变量用一个变量,接受的值是元组接受的值是元组. v = headtail(1,2,3,4,5) v(1, 5) 关于关于return return通常出现在函数末尾通常出现在函数末尾,因为函数一般都是因为函数一般都是执行完所有步骤之后才能得出计算结果并返回执行完所有步骤之后才能得出计算结果并返回. 有时在函数到达末尾之前就终止执行并返回有时在函数到达末尾之前就终止执行并返回.def f(x): if x from moduletest import days days(1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科室护理团队简介
- 2025年小升初数学试卷(SAT解题技巧与写作)
- 2025年高考数学模拟检测卷(概率与统计综合)-名校真题解析试题卷
- 2025年资产评估师职业资格考试模拟试题:实务(一)机器设备评估实务案例精析
- 地理灾害防治案例分析:2025年初中学业水平考试试题集
- 广西北海市2025届高三上学期第一次模拟考试(英语)
- 口腔牙髓治疗教学
- 2025年校园施工安全警示规范解读施工安全法规实施指南
- 髋关节护理常识
- 高中数学人教B版 (2019)选择性必修 第三册第五章 数列本章综合与测试当堂检测题
- 湖北省武汉市2025届高三年级五月模拟训练试题数学试题及答案(武汉五调)
- 医师挂证免责协议书
- 济南民政离婚协议书
- 新课标(水平三)体育与健康《篮球》大单元教学计划及配套教案(18课时)
- DL∕T 5210.6-2019 电力建设施工质量验收规程 第6部分:调整试验
- BF——2008——0603 北京市房屋租赁合同
- 张紧轮支架加工工艺及夹具设计说明书
- 中国十大名茶(课堂PPT)
- 2018年黑龙江省牡丹江市中考语文试题及答案
- 篇一:整改报告(范本)
- 危险源辨识、风险评价表及重要危险源清单(包括程序文件)
评论
0/150
提交评论