06_用函數(shù)實(shí)現(xiàn)代碼復(fù)用教學(xué)課件_第1頁
06_用函數(shù)實(shí)現(xiàn)代碼復(fù)用教學(xué)課件_第2頁
06_用函數(shù)實(shí)現(xiàn)代碼復(fù)用教學(xué)課件_第3頁
06_用函數(shù)實(shí)現(xiàn)代碼復(fù)用教學(xué)課件_第4頁
06_用函數(shù)實(shí)現(xiàn)代碼復(fù)用教學(xué)課件_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Python 3 程序設(shè)計(jì) 主講教師: 人民郵電出版社6 用函數(shù)實(shí)現(xiàn)代碼復(fù)用人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列第6章 用函數(shù)實(shí)現(xiàn)代碼復(fù)用 本章內(nèi)容本章內(nèi)容 函數(shù)函數(shù)的定義和的定義和調(diào)用調(diào)用 函數(shù)函數(shù)的參數(shù)和返回值的參數(shù)和返回值 閉包閉包和遞歸函數(shù)和遞歸函數(shù) 變量變量的作用域的作用域 Python的的內(nèi)置函數(shù)內(nèi)置函數(shù)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.1 函數(shù)的定義和調(diào)用 函數(shù)是實(shí)現(xiàn)某一特定功能的語句集合 函數(shù)復(fù)用,提高了代碼的可重用性 函數(shù)實(shí)現(xiàn)單一的功能,提高了程序的獨(dú)立性 同一個(gè)函數(shù),通過接收不同的參數(shù),實(shí)現(xiàn)不同的功能,提

2、高了程序的適應(yīng)性 內(nèi)置函數(shù),用戶定義函數(shù)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.1 函數(shù)的定義和調(diào)用 函數(shù)的定義函數(shù)的定義 使用def關(guān)鍵字def funcname(paras): statements return expression def關(guān)鍵字開頭,后接函數(shù)名和圓括號(hào)() paras是函數(shù)的參數(shù),參數(shù)之間用逗號(hào)分隔 statements是函數(shù)體 函數(shù)聲明以冒號(hào)結(jié)束,函數(shù)體內(nèi)需要縮進(jìn) return 語句用于結(jié)束函數(shù),將返回值傳遞給調(diào)用語句。不帶表達(dá)式的return返回None值。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.1 函

3、數(shù)的定義和調(diào)用 函數(shù)的調(diào)用函數(shù)的調(diào)用 通過函數(shù)名加上一組圓括號(hào)來調(diào)用函數(shù),圓括號(hào)內(nèi)是參數(shù),多個(gè)參數(shù)之間用逗號(hào)分隔。 def是可執(zhí)行語句,函數(shù)的調(diào)用必須在函數(shù)定義之后。 def getcirclearea(r):print(圓的面積是::8.2f.format(3.14*r*r)return getcirclearea(3)圓的面積是: 28.26人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.1 函數(shù)的定義和調(diào)用 函數(shù)的嵌套函數(shù)的嵌套 函數(shù)的嵌套定義在函數(shù)內(nèi)部定義的函數(shù),內(nèi)嵌的函數(shù)只能在該函數(shù)內(nèi)部使用,閉包應(yīng)用了函數(shù)的嵌套定義。 函數(shù)的嵌套調(diào)用在一個(gè)函數(shù)的內(nèi)部調(diào)用其他函

4、數(shù)的過程。嵌套調(diào)用是模塊化程序設(shè)計(jì)的基礎(chǔ),合理劃分不同的函數(shù),有利于實(shí)現(xiàn)程序的模塊化。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 函數(shù)的參數(shù)函數(shù)的參數(shù) 定義函數(shù)時(shí),參數(shù)表中的參數(shù)稱為形式參數(shù),也稱形參。 調(diào)用函數(shù)時(shí),參數(shù)表中的參數(shù)稱為實(shí)際參數(shù),也稱實(shí)參。 調(diào)用函數(shù)的過程就是將實(shí)參傳遞給形參的過程。1. 位置參數(shù) 函數(shù)調(diào)用時(shí),默認(rèn)情況下,實(shí)參將按照位置順序傳遞給形參。 def getvolume(r,h):print(圓的體積是::8.2f.format(3.14*r*r*h)調(diào)用函數(shù)時(shí),執(zhí)行g(shù)etvolume(3,4)和ge

5、tvolume(4,3),兩個(gè)函數(shù)的邏輯含義是不同的。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 函數(shù)的參數(shù)函數(shù)的參數(shù)2. 賦值參數(shù)Python提供了按照形參名稱輸入實(shí)參的方式,這種參數(shù)稱為賦值參數(shù)。 def getscore(pe,eng,math,phy,chem):return pe*0.5+eng*1+math*1.2+phy*1+chem*1 getscore(93,89,78,89,72) # 按位置傳遞390.1 getscore(pe=93,math=78,chem=72,eng=89,phy=89) 390

6、.1人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 函數(shù)的參數(shù)函數(shù)的參數(shù)3. 參數(shù)值的類型參數(shù)值的類型是指函數(shù)調(diào)用時(shí),傳遞的實(shí)際參數(shù)是基本數(shù)據(jù)類型還是組合數(shù)據(jù)類型,不同的參數(shù)類型在函數(shù)調(diào)用后,參數(shù)值的變化是不同的。 基本數(shù)據(jù)類型作為實(shí)參時(shí),是將常量或變量的值傳遞給形參,是一種值傳遞的過程。 列表、元組、字典等組合數(shù)據(jù)類型的變量用做函數(shù)參數(shù)時(shí),形參和實(shí)參之間傳遞的只是組合數(shù)據(jù)類型變量(參數(shù))的地址。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 默認(rèn)參數(shù)默認(rèn)參數(shù) 定

7、義函數(shù)時(shí),為函數(shù)的形式參數(shù)設(shè)置默認(rèn)值,該參數(shù)被稱為默認(rèn)參數(shù)。 調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)在定義時(shí)已經(jīng)被賦值,可以忽略,其它參數(shù)是必須要傳入值。 若默認(rèn)參數(shù)沒有傳入值,則直接使用默認(rèn)的值;如果默認(rèn)參數(shù)傳入了值,則使用傳入的新值替代。 帶有默認(rèn)值的參數(shù)一定要位于參數(shù)列表的最后面。 例6-8默認(rèn)參數(shù)的應(yīng)用。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 可變參數(shù)可變參數(shù) 函數(shù)定義時(shí),該函數(shù)可以接受任意個(gè)數(shù)的參數(shù),參數(shù)的個(gè)數(shù)可能是1個(gè)或多個(gè),也可能是0個(gè)。 可變參數(shù)有兩種形式,參數(shù)名稱前加星號(hào)(*)或者加兩個(gè)星號(hào)(*)。def funname

8、(formal_args,*args,*kwargs): statements return expression 例6-9 可變參數(shù)的應(yīng)用。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 函數(shù)的返回值函數(shù)的返回值 返回值可以是任何數(shù)據(jù)類型 return expression語句將表達(dá)式值作為返回值傳遞給調(diào)用方。 不帶參數(shù)值的return語句返回None。 例6-11 return關(guān)鍵字的應(yīng)用。 def compare( arg1, arg2 ): result = arg1 arg2 return result # 函數(shù)體內(nèi)r

9、esult值 btest= compare(10,9.99) # 調(diào)用sum函數(shù) print (函數(shù)的返回值: ,btest)函數(shù)的返回值: True人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.2 函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)和返回值 lambda函數(shù)函數(shù) 匿名函數(shù),是一個(gè)lambda表達(dá)式,是不需要使用def關(guān)鍵字定義的函數(shù)。 lambda paras:expression paras是可選的參數(shù)表;expression是函數(shù)表達(dá)式,不能包含分支或循環(huán)語句。 expression的值做為lambda函數(shù)的返回值。 應(yīng)用場(chǎng)景是定義簡(jiǎn)單的、能用一行表示的函數(shù),返回函數(shù)

10、類型。 Python具有函數(shù)式編程的特性,map、reduce、filter、sorted等函數(shù)都支持函數(shù)作為參數(shù),lambda函數(shù)可以方便地應(yīng)用在函數(shù)式編程中。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.3 閉包和遞歸函數(shù) 閉包閉包* Python支持閉包(closure)語法結(jié)構(gòu)。 內(nèi)部函數(shù)引用了外部函數(shù)作用域的變量,這個(gè)內(nèi)部函數(shù)被稱為閉包。 在Python中創(chuàng)建一個(gè)閉包需要滿足以下條件 閉包函數(shù)必須有嵌套函數(shù)。 嵌套函數(shù)需要引用外部函數(shù)中的變量。 外部函數(shù)需要將嵌套函數(shù)名作為返回值返回。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.3

11、 閉包和遞歸函數(shù) 遞歸函數(shù)遞歸函數(shù) 函數(shù)在其定義或聲明中直接或間接調(diào)用自身的一種方法。 遞歸的基本思想 在求解一個(gè)問題時(shí),將該問題遞退簡(jiǎn)化為一個(gè)規(guī)模較小的同一問題,并設(shè)法求得這個(gè)規(guī)模較小的問題的解,在此基礎(chǔ)上再遞進(jìn)求解原來的問題。 如果經(jīng)遞退簡(jiǎn)化的問題還難以求解,可以再進(jìn)行遞退簡(jiǎn)化,直至將問題遞退簡(jiǎn)化到一個(gè)容易求解的基本問題為止。在此基礎(chǔ)上進(jìn)行遞進(jìn)求解,直至求得原問題的解。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.3 閉包和遞歸函數(shù) 遞歸函數(shù)遞歸函數(shù) 一個(gè)遞歸的方法即為直接或間接地調(diào)用自身的方法; 任何一個(gè)遞歸方法都必須有一個(gè)遞歸出口。 例6-16 求斐波那契數(shù)列

12、第i個(gè)元素的遞歸函數(shù) 2 def fib(i): 3 if i=0: 4 return 0 5 elif i=1: 6 return 1 7 else: 8 return fib(i-1)+fib(i-2)10 print(fib(8)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.4 變量的作用域 局部變量局部變量 定義在函數(shù)內(nèi)的變量,其作用范圍是從函數(shù)定義開始,到函數(shù)執(zhí)行結(jié)束。例6-19 局部變量的作用域 兩個(gè)函數(shù)func1()和func2()。 分別定義了局部變量x1,y1,z,在各自的函數(shù)中互不影響。 def func1(x,y):x1=x;y1=yz=100p

13、rint(in func1(),x1=,x1)print(in func1(),y1=,y1)print(in func1(),z=,z)func2()return def func2():x1=10;y1=20z=0print(in func2(),x1=,x1)print(in func2(),y1=,y1)print(in func2(),z=,z)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.4 變量的作用域 全局變量全局變量 是定義在函數(shù)外的變量,它擁有全局作用域。1. 讀取全局變量 全局變量在各函數(shù)內(nèi)部是只讀的,作用是受限的。 例6-20 函數(shù)外定義的全局

14、變量在函數(shù)內(nèi)讀?。ú恍薷模?。 1 #ex0620.py 2 basis=100 #全局變量 3 def func1(x,y): #計(jì)算總分 4 sum=basis+x+y 5 return sum 7 def func2(x,y): #計(jì)算平均分 8 avg=(basis+x*0.9+y*0.8)/3 9 return avg1011 score1=func1(75,62)12 score2=func2(75,62)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.4 變量的作用域 全局變量全局變量2. 在函數(shù)中定義了與全局變量同名的變量例6-21 函數(shù)中定義了與全局變量

15、同名的變量,實(shí)質(zhì)是局部變量。3. 不允許在函數(shù)中先使用與全局變量同名的變量例6-22 函數(shù)中使用全局變量,程序異常。人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.4 變量的作用域 global語句語句 為了在函數(shù)內(nèi)部能讀寫全局變量,Python提供了global語句,用于在函數(shù)內(nèi)部聲明全局變量。 例6-23 global語句的應(yīng)用。 1 #ex0623.py 2 basis=100 #全局變量 3 def func4(x,y): 4 global basis #聲明basis是函數(shù)外的全局變量 5 print(basis) #100 6 basis=90 7 sum=

16、basis+x+y 8 return sum10 print(func4(75,62)11 print(basis) #90人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.5 Python的內(nèi)置函數(shù) 數(shù)學(xué)運(yùn)算函數(shù)數(shù)學(xué)運(yùn)算函數(shù)函數(shù)名函數(shù)名示例示例abs()abs(-2),abs(3.77)divmod()divmod(10,3)max()max(-1,1,2,3,4),max(abcef989)min()min(-1,12,3,4,5)pow()pow(2,3),pow(2,3,5)round()round(1.456778),round(1.45677,2)sum()s

17、um(1,2,3,4), sum(1,2,3,4),-10)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.5 Python的內(nèi)置函數(shù) 字符串字符串運(yùn)算函數(shù)運(yùn)算函數(shù)字符串作為一種最常用的數(shù)據(jù)類型,它提供了大小寫轉(zhuǎn)換、查找替換、拆分合并等函數(shù)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.5 Python的內(nèi)置函數(shù) 轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)主要用于不同數(shù)據(jù)類型之間的轉(zhuǎn)換,函數(shù)名函數(shù)名示例示例bool()bool(str) ,bool(0)int()int(3) ,int(3.6)float()float(3),float(3.4)complexco

18、mplex(1+2j),complex(1,2)str()()str(123),str(abc)ord()ord(a)chr()chr(97)bin()bin(3)oct()oct(10)hex()hex(15)人民郵電出版社Python 3程序設(shè)計(jì)程序設(shè)計(jì)程序設(shè)計(jì)新形態(tài)精品系列6.5 Python的內(nèi)置函數(shù) 序列操作函數(shù)序列操作函數(shù)序列包括字符串、列表、元組等,下列函數(shù)主要針對(duì)列表、元組兩種數(shù)據(jù)結(jié)構(gòu)。函數(shù)名函數(shù)名功能說明功能說明all()判斷可迭代對(duì)象的每個(gè)元素是否都為True值any()判斷可迭代對(duì)象的元素是否有為True值的元素range()產(chǎn)生一個(gè)序列,默認(rèn)從0開始map()使用指定方法去操作傳入的每個(gè)可迭代對(duì)象的元素,生成新的可迭代對(duì)象filter()使用指定方法過濾可迭代對(duì)象的元素reduce()使用指定方法累積可迭代對(duì)象的元素zip() 聚合傳入的每個(gè)迭代器中相同位置的元素,返回一個(gè)新的元組類型迭代器sorted ()對(duì)可迭代對(duì)象進(jìn)行排序,返回一個(gè)新的列表reversed()反轉(zhuǎn)序列生成新的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論