




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、模塊化編程模塊化編程模塊化設(shè)計和建造模塊化設(shè)計和建造 在對產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上在對產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上,將產(chǎn)品將產(chǎn)品分解成若干個功能模塊分解成若干個功能模塊,預(yù)制好的模塊再預(yù)制好的模塊再進(jìn)行組裝進(jìn)行組裝,形成最終產(chǎn)品形成最終產(chǎn)品. 模塊模塊:提供特定功能的相對獨立的單元提供特定功能的相對獨立的單元. 標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化:標(biāo)準(zhǔn)尺寸和標(biāo)準(zhǔn)接口標(biāo)準(zhǔn)尺寸和標(biāo)準(zhǔn)接口 可組裝可組裝:多個模塊可以方便靈活地組合多個模塊可以方便靈活地組合 可替換可替換:改變系統(tǒng)的局部功能改變系統(tǒng)的局部功能 可維護(hù)可維護(hù):對模塊進(jìn)行局部修改或設(shè)置對模塊進(jìn)行局部修改或設(shè)置Lu Chaojun, SJTU 2模塊化編程模塊化編程
2、 將程序分解為獨立的、可替換的、具有將程序分解為獨立的、可替換的、具有預(yù)定功能的模塊預(yù)定功能的模塊,每個模塊實現(xiàn)一個功能每個模塊實現(xiàn)一個功能.各模塊組合在一起形成最終程序各模塊組合在一起形成最終程序. 好處好處: 易設(shè)計易設(shè)計:復(fù)雜問題化成簡單問題復(fù)雜問題化成簡單問題 易實現(xiàn)易實現(xiàn):可以團(tuán)隊開發(fā)可以團(tuán)隊開發(fā) 易測試易測試:可各自測試可各自測試 易維護(hù)易維護(hù):增加模塊增加模塊 可重用可重用:一個模塊可參與組合不同程序一個模塊可參與組合不同程序Lu Chaojun, SJTU 3分離關(guān)注點分離關(guān)注點 關(guān)注點關(guān)注點:是指設(shè)計者關(guān)心的某個系統(tǒng)特性是指設(shè)計者關(guān)心的某個系統(tǒng)特性或行為或行為 分離關(guān)注點分離
3、關(guān)注點(SoC):將系統(tǒng)分解為互不重將系統(tǒng)分解為互不重疊的若干部分疊的若干部分,每個部分對應(yīng)于一個關(guān)注每個部分對應(yīng)于一個關(guān)注點點. 在模塊化編程中在模塊化編程中,以程序的各個功能作為以程序的各個功能作為關(guān)注點關(guān)注點,模塊劃分就是分離關(guān)注點的結(jié)果模塊劃分就是分離關(guān)注點的結(jié)果.Lu Chaojun, SJTU 4編程語言中的模塊化構(gòu)造編程語言中的模塊化構(gòu)造 匯編語言匯編語言:子例程子例程,宏宏 高級語言高級語言:函數(shù)函數(shù),過程過程 有的語言不加區(qū)分有的語言不加區(qū)分,統(tǒng)稱為函數(shù)統(tǒng)稱為函數(shù). 包包,模塊模塊,函數(shù)庫函數(shù)庫,類庫類庫Lu Chaojun, SJTU 5Python函數(shù)函數(shù) 函數(shù)是一種程序
4、構(gòu)件函數(shù)是一種程序構(gòu)件,是構(gòu)成大程序的小是構(gòu)成大程序的小功能部件功能部件 function一詞本身就有一詞本身就有功能功能的含義的含義 我們已經(jīng)熟悉的函數(shù)我們已經(jīng)熟悉的函數(shù):Python內(nèi)建函數(shù)內(nèi)建函數(shù),如如abs()Python庫函數(shù)庫函數(shù),如如math.sqrt() 模塊化的程序是由許多函數(shù)組合而成的模塊化的程序是由許多函數(shù)組合而成的.Lu Chaojun, SJTU 6為什么需要函數(shù)為什么需要函數(shù)? 編程更容易把握編程更容易把握 大程序分解成小功能部件大程序分解成小功能部件 代碼重用代碼重用,避免重復(fù)相同避免重復(fù)相同/相似代碼相似代碼 提高開發(fā)效率提高開發(fā)效率 更易維護(hù)更易維護(hù) 程序更可
5、讀程序更可讀,更易理解更易理解 代碼簡潔美觀代碼簡潔美觀Lu Chaojun, SJTU 7函數(shù)用途函數(shù)用途:減少重復(fù)代碼減少重復(fù)代碼 編程實例編程實例:畫一棵樹畫一棵樹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()重復(fù)代碼的弊端重復(fù)代碼的弊端 程序不必要地冗長程序不必要地
6、冗長 代碼一致性維護(hù)麻煩代碼一致性維護(hù)麻煩:若修改一處代碼若修改一處代碼,則則所有重復(fù)的地方都要一致地修改所有重復(fù)的地方都要一致地修改 程序看上去累贅不美觀程序看上去累贅不美觀 輸入大量重復(fù)代碼很單調(diào)乏味輸入大量重復(fù)代碼很單調(diào)乏味函數(shù)用途函數(shù)用途:改善程序結(jié)構(gòu)改善程序結(jié)構(gòu)(1) 模塊化模塊化:將程序分解成多個較小的相對獨將程序分解成多個較小的相對獨立的函數(shù)立的函數(shù),可使程序結(jié)構(gòu)清晰可使程序結(jié)構(gòu)清晰,容易理解容易理解.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()函數(shù)用途函數(shù)用途:改善程序結(jié)構(gòu)改善程序結(jié)構(gòu)(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()主程序結(jié)構(gòu)清晰主程序結(jié)構(gòu)清晰函數(shù)用途函數(shù)用途:提高程序通用性提高程序通用性 換用換用字符來畫樹字符來畫樹,以便比較美觀度以便比較美觀度.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().利用函數(shù)參數(shù)利用函數(shù)參數(shù)提高通用
10、性提高通用性小結(jié)小結(jié):函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用 先定義先定義(define) 再通過函數(shù)名調(diào)用再通過函數(shù)名調(diào)用 調(diào)用時傳遞參數(shù)調(diào)用時傳遞參數(shù) 調(diào)用執(zhí)行的是函數(shù)體調(diào)用執(zhí)行的是函數(shù)體(語句序列語句序列) 調(diào)用產(chǎn)生返回值調(diào)用產(chǎn)生返回值 函數(shù)定義可置于程序中任何地方函數(shù)定義可置于程序中任何地方,但必須但必須在調(diào)用之前在調(diào)用之前Lu Chaojun, SJTU 13def func(x): y = x * x return ya = func(2)函數(shù)調(diào)用過程函數(shù)調(diào)用過程 函數(shù)定義函數(shù)定義def (): 函數(shù)調(diào)用函數(shù)調(diào)用() 調(diào)用者暫停調(diào)用者暫停 函數(shù)形參被賦值為實參函數(shù)形參被賦值為實參 執(zhí)行函
11、數(shù)體執(zhí)行函數(shù)體 控制返回調(diào)用者控制返回調(diào)用者(調(diào)用點的下一條語句調(diào)用點的下一條語句)函數(shù)調(diào)用過程圖解函數(shù)調(diào)用過程圖解(1)函數(shù)調(diào)用過程圖解函數(shù)調(diào)用過程圖解(2)函數(shù)調(diào)用過程圖解函數(shù)調(diào)用過程圖解(3)參數(shù)傳遞參數(shù)傳遞 對于函數(shù)定義對于函數(shù)定義def f(x,y,z): . 按位置傳遞按位置傳遞f(1,2,3) 按名傳遞按名傳遞:形參形參=實參實參f(x=1,z=3,y=2) 實參可以是字面值實參可以是字面值,也可以是已賦值的變也可以是已賦值的變量量f(1,a,b)變量的作用域變量的作用域 變量具有變量具有作用域作用域(scope):即可以引用該變量的程序區(qū)域即可以引用該變量的程序區(qū)域. 不同作用
12、域中的變量不同作用域中的變量,即使同名即使同名,也是不同的變量也是不同的變量! 作用域可以是局部作用域可以是局部,也可以是全局也可以是全局 函數(shù)中定義的變量是函數(shù)中定義的變量是局部的局部的:即作用域是函數(shù)體即作用域是函數(shù)體. 函數(shù)的形參可視為局部變量函數(shù)的形參可視為局部變量,只不過是在調(diào)用時才賦值只不過是在調(diào)用時才賦值.x,y = 0,0def f(x): y = 1 print x,yf(x)print x,y函數(shù)如何使用外部數(shù)據(jù)函數(shù)如何使用外部數(shù)據(jù) Python中中,函數(shù)體可直接引用外部的變量函數(shù)體可直接引用外部的變量.x = 0def f(y): z = 1 print x,y,zf(1
13、0) 但這用法很不好但這用法很不好!不符合模塊化要求不符合模塊化要求. 應(yīng)當(dāng)通過參數(shù)向函數(shù)傳遞數(shù)據(jù)應(yīng)當(dāng)通過參數(shù)向函數(shù)傳遞數(shù)據(jù)x = 0def f(p,y): z = 1 print p,y,zf(x,10)f() xy,zx全局變量全局變量 函數(shù)若需引用并修改外部變量函數(shù)若需引用并修改外部變量,可聲明可聲明全局變量全局變量 x = 1 def f(): print x #未定義變量視為全局變量未定義變量視為全局變量 x = 2 #賦值引入局部變量賦值引入局部變量,則前行出錯則前行出錯! f() def h(): global x print x x = 2 #此賦值是針對全局變量的此賦值是針對
14、全局變量的 print x h()f() xh() xx全局變量的用途全局變量的用途 多個函數(shù)處理共享數(shù)據(jù)多個函數(shù)處理共享數(shù)據(jù)def f(): global x x = x + 1 print xdef g(): global x x = x 1 print xx = 0f()g() 函數(shù)的返回值函數(shù)的返回值 函數(shù)與調(diào)用者之間的信息交互函數(shù)與調(diào)用者之間的信息交互: 通過形參從調(diào)用者輸入值通過形參從調(diào)用者輸入值 通過通過返回值返回值向調(diào)用者輸出值向調(diào)用者輸出值 定義定義def (): return return計算各表達(dá)式計算各表達(dá)式,將結(jié)果返回調(diào)用者將結(jié)果返回調(diào)用者,退退出函數(shù)出函數(shù)函數(shù)返回值
15、的使用函數(shù)返回值的使用 如果沒有或者用不上函數(shù)返回值如果沒有或者用不上函數(shù)返回值,則函數(shù)調(diào)用可則函數(shù)調(diào)用可以直接當(dāng)成一條語句以直接當(dāng)成一條語句f(3) 相當(dāng)于某些語言中的相當(dāng)于某些語言中的過程調(diào)用過程調(diào)用 如果想使用函數(shù)返回值如果想使用函數(shù)返回值,則有兩種用法則有兩種用法 用變量接收返回值用變量接收返回值,如如x = f(3)print 2 + x * 4 直接用在表達(dá)式中直接用在表達(dá)式中,如如print 2 + f(3) * 4 忘記接收函數(shù)返回值是忘記接收函數(shù)返回值是Python初學(xué)者的常見錯初學(xué)者的常見錯誤誤函數(shù)返回值使用例函數(shù)返回值使用例(1) def sq(x): return x
16、* x sq(2)4 print sq(3) + 110 a = 4 b = sq(a) print b16 函數(shù)返回值使用例函數(shù)返回值使用例(2) 求兩點距離的函數(shù)求兩點距離的函數(shù)from math import sqrtdef sq(x): return x * xdef dist(u,v): d = sqrt(sq(v0-u0)+sq(v1-u1) return d 用一個函數(shù)輔助定義另一個函數(shù)用一個函數(shù)輔助定義另一個函數(shù),這是化繁為這是化繁為簡的常用做法簡的常用做法.函數(shù)返回值使用例函數(shù)返回值使用例(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) 關(guān)于關(guān)于return return通常出現(xiàn)在函數(shù)末尾通常出現(xiàn)在函數(shù)末尾,因為函數(shù)一般都是因為函數(shù)一般都是執(zhí)行完所有步驟之后才能得出計算結(jié)果并返回執(zhí)行完所有步驟之后才能得出計算結(jié)果并返回. 有時在函數(shù)到達(dá)末尾之前就終止執(zhí)行并返回有時在函數(shù)到達(dá)末尾之前就終止執(zhí)行并返回.def f(x): if x from moduletest import days days(1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CERDS 12-2024基于物理技術(shù)的集中用餐剩余食物就地飼料化利用規(guī)范
- T/CACEM 35-2024交通運輸企業(yè)碳排放管理體系要求
- 溫州房屋租賃合同范本2篇
- 建筑裝飾裝修總承包合同4篇
- 廣告制作合同常用版范本7篇
- 菜園大棚承包合同樣本5篇
- 標(biāo)準(zhǔn)版房屋維修協(xié)議書5篇
- 溴化鋰制冷設(shè)備項目績效評估報告
- 工地急救安全培訓(xùn)
- 2025西安電子科技大學(xué)輔導(dǎo)員考試試題及答案
- 2023-2024學(xué)年廣東省深圳市深中共同體聯(lián)考八年級(下)期中地理試卷
- 高層建筑汽車吊吊裝作業(yè)方案
- 24秋新人教版地理七年級上冊大單元整體設(shè)計-第四章 天氣與氣候課件
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(創(chuàng)新創(chuàng)業(yè)課程)完整全套教學(xué)課件
- CJJ/T47-2016生活垃圾轉(zhuǎn)運站技術(shù)規(guī)范
- DL∕T 5156.2-2015 電力工程勘測制圖標(biāo)準(zhǔn) 第2部分:巖土工程
- 醫(yī)療成品審核放行單
- NB/T 11462-2023帶式輸送機用液壓卷帶裝置
- 2024年山東泰山醫(yī)養(yǎng)健康產(chǎn)業(yè)集團(tuán)招聘筆試沖刺題(帶答案解析)
- 《TCEC 天然酯絕緣油電力變壓器 第3部分:油中溶解氣體分析導(dǎo)則》
- 《TypeScript入門與全棧式網(wǎng)站開發(fā)實戰(zhàn)》 教學(xué)大綱
評論
0/150
提交評論