Python程序設(shè)計(jì)教程-06-用函數(shù)實(shí)現(xiàn)代碼復(fù)用課件_第1頁(yè)
Python程序設(shè)計(jì)教程-06-用函數(shù)實(shí)現(xiàn)代碼復(fù)用課件_第2頁(yè)
Python程序設(shè)計(jì)教程-06-用函數(shù)實(shí)現(xiàn)代碼復(fù)用課件_第3頁(yè)
Python程序設(shè)計(jì)教程-06-用函數(shù)實(shí)現(xiàn)代碼復(fù)用課件_第4頁(yè)
Python程序設(shè)計(jì)教程-06-用函數(shù)實(shí)現(xiàn)代碼復(fù)用課件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

6用函數(shù)實(shí)現(xiàn)代碼復(fù)用6用函數(shù)實(shí)現(xiàn)代碼復(fù)用第6章用函數(shù)實(shí)現(xiàn)代碼復(fù)用本章內(nèi)容函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值閉包和遞歸函數(shù)變量的作用域PYTHON的內(nèi)置函數(shù)第6章用函數(shù)實(shí)現(xiàn)代碼復(fù)用本章內(nèi)容6.1函數(shù)的定義和調(diào)用函數(shù)是實(shí)現(xiàn)某一特定功能的語(yǔ)句集合函數(shù)復(fù)用,提高了代碼的可重用性函數(shù)實(shí)現(xiàn)單一的功能,提高了程序的獨(dú)立性同一個(gè)函數(shù),通過(guò)接收不同的參數(shù),實(shí)現(xiàn)不同的功能,提高了程序的適應(yīng)性內(nèi)置函數(shù),用戶定義函數(shù)6.1函數(shù)的定義和調(diào)用6.1函數(shù)的定義和調(diào)用函數(shù)的定義使用def關(guān)鍵字deffuncname(paras):

statements

return[expression]●def關(guān)鍵字開(kāi)頭,后接函數(shù)名和圓括號(hào)()●paras是函數(shù)的參數(shù),參數(shù)之間用逗號(hào)分隔●statements是函數(shù)體●函數(shù)聲明以冒號(hào)結(jié)束,函數(shù)體內(nèi)需要縮進(jìn)●return語(yǔ)句用于結(jié)束函數(shù),將返回值傳遞給調(diào)用語(yǔ)句。不帶表達(dá)式的return返回None值。6.1函數(shù)的定義和調(diào)用函數(shù)的定義6.1函數(shù)的定義和調(diào)用函數(shù)的調(diào)用通過(guò)函數(shù)名加上一組圓括號(hào)來(lái)調(diào)用函數(shù),圓括號(hào)內(nèi)是參數(shù),多個(gè)參數(shù)之間用逗號(hào)分隔。def是可執(zhí)行語(yǔ)句,函數(shù)的調(diào)用必須在函數(shù)定義之后。>>>defgetcirclearea(r): print("圓的面積是:{:>8.2f}".format(3.14*r*r))

return>>>getcirclearea(3)圓的面積是:28.266.1函數(shù)的定義和調(diào)用函數(shù)的調(diào)用6.1函數(shù)的定義和調(diào)用函數(shù)的嵌套函數(shù)的嵌套定義在函數(shù)內(nèi)部定義的函數(shù),內(nèi)嵌的函數(shù)只能在該函數(shù)內(nèi)部使用,閉包應(yīng)用了函數(shù)的嵌套定義。函數(shù)的嵌套調(diào)用在一個(gè)函數(shù)的內(nèi)部調(diào)用其他函數(shù)的過(guò)程。嵌套調(diào)用是模塊化程序設(shè)計(jì)的基礎(chǔ),合理劃分不同的函數(shù),有利于實(shí)現(xiàn)程序的模塊化。6.1函數(shù)的定義和調(diào)用函數(shù)的嵌套6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)定義函數(shù)時(shí),參數(shù)表中的參數(shù)稱為形式參數(shù),也稱形參。調(diào)用函數(shù)時(shí),參數(shù)表中的參數(shù)稱為實(shí)際參數(shù),也稱實(shí)參。調(diào)用函數(shù)的過(guò)程就是將實(shí)參傳遞給形參的過(guò)程。1.位置參數(shù)函數(shù)調(diào)用時(shí),默認(rèn)情況下,實(shí)參將按照位置順序傳遞給形參。

defgetvolume(r,h): print("圓的體積是:{:>8.2f}".format(3.14*r*r*h))調(diào)用函數(shù)時(shí),執(zhí)行g(shù)etvolume(3,4)和getvolume(4,3),兩個(gè)函數(shù)的邏輯含義是不同的。6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)2.賦值參數(shù)Python提供了按照形參名稱輸入實(shí)參的方式,這種參數(shù)稱為賦值參數(shù)。>>>defgetscore(pe,eng,math,phy,chem): returnpe*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.16.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(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í),是將常量或變量的值傳遞給形參,是一種值傳遞的過(guò)程。列表、元組、字典等組合數(shù)據(jù)類型的變量用做函數(shù)參數(shù)時(shí),形參和實(shí)參之間傳遞的只是組合數(shù)據(jù)類型變量(參數(shù))的地址。6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(shù)的參數(shù)和返回值默認(rèn)參數(shù)定義函數(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ù)沒(méi)有傳入值,則直接使用默認(rèn)的值;如果默認(rèn)參數(shù)傳入了值,則使用傳入的新值替代。帶有默認(rèn)值的參數(shù)一定要位于參數(shù)列表的最后面。例6-8默認(rèn)參數(shù)的應(yīng)用。6.2函數(shù)的參數(shù)和返回值默認(rèn)參數(shù)6.2函數(shù)的參數(shù)和返回值函數(shù)的返回值返回值可以是任何數(shù)據(jù)類型return[expression]語(yǔ)句將表達(dá)式值作為返回值傳遞給調(diào)用方。不帶參數(shù)值的return語(yǔ)句返回None。例6-11return關(guān)鍵字的應(yīng)用。>>>defcompare(arg1,arg2):result=arg1>arg2

returnresult#函數(shù)體內(nèi)result值>>>btest=compare(10,9.99)#調(diào)用sum函數(shù)>>>print("函數(shù)的返回值:",btest)函數(shù)的返回值:True6.2函數(shù)的參數(shù)和返回值函數(shù)的返回值6.2函數(shù)的參數(shù)和返回值lambda函數(shù)匿名函數(shù),是一個(gè)lambda表達(dá)式,是不需要使用def關(guān)鍵字定義的函數(shù)。lambdaparas:expressionparas是可選的參數(shù)表;expression是函數(shù)表達(dá)式,不能包含分支或循環(huán)語(yǔ)句。expression的值做為lambda函數(shù)的返回值。應(yīng)用場(chǎng)景是定義簡(jiǎn)單的、能用一行表示的函數(shù),返回函數(shù)類型。Python具有函數(shù)式編程的特性,map、reduce、filter、sorted等函數(shù)都支持函數(shù)作為參數(shù),lambda函數(shù)可以方便地應(yīng)用在函數(shù)式編程中。6.2函數(shù)的參數(shù)和返回值lambda函數(shù)6.3閉包和遞歸函數(shù)閉包*Python支持閉包(closure)語(yǔ)法結(jié)構(gòu)。內(nèi)部函數(shù)引用了外部函數(shù)作用域的變量,這個(gè)內(nèi)部函數(shù)被稱為閉包。在Python中創(chuàng)建一個(gè)閉包需要滿足以下條件●閉包函數(shù)必須有嵌套函數(shù)?!袂短缀瘮?shù)需要引用外部函數(shù)中的變量?!裢獠亢瘮?shù)需要將嵌套函數(shù)名作為返回值返回。6.3閉包和遞歸函數(shù)閉包*6.3閉包和遞歸函數(shù)遞歸函數(shù)函數(shù)在其定義或聲明中直接或間接調(diào)用自身的一種方法。遞歸的基本思想在求解一個(gè)問(wèn)題時(shí),將該問(wèn)題遞退簡(jiǎn)化為一個(gè)規(guī)模較小的同一問(wèn)題,并設(shè)法求得這個(gè)規(guī)模較小的問(wèn)題的解,在此基礎(chǔ)上再遞進(jìn)求解原來(lái)的問(wèn)題。如果經(jīng)遞退簡(jiǎn)化的問(wèn)題還難以求解,可以再進(jìn)行遞退簡(jiǎn)化,直至將問(wèn)題遞退簡(jiǎn)化到一個(gè)容易求解的基本問(wèn)題為止。在此基礎(chǔ)上進(jìn)行遞進(jìn)求解,直至求得原問(wèn)題的解。6.3閉包和遞歸函數(shù)遞歸函數(shù)6.3閉包和遞歸函數(shù)遞歸函數(shù)●一個(gè)遞歸的方法即為直接或間接地調(diào)用自身的方法;●任何一個(gè)遞歸方法都必須有一個(gè)遞歸出口。例6-16求斐波那契數(shù)列第i個(gè)元素的遞歸函數(shù)2deffib(i):3ifi==0:4return05elifi==1:6return17else:8returnfib(i-1)+fib(i-2)10print(fib(8))6.3閉包和遞歸函數(shù)遞歸函數(shù)6.4變量的作用域局部變量定義在函數(shù)內(nèi)的變量,其作用范圍是從函數(shù)定義開(kāi)始,到函數(shù)執(zhí)行結(jié)束。例6-19局部變量的作用域兩個(gè)函數(shù)func1()和func2()。分別定義了局部變量x1,y1,z,在各自的函數(shù)中互不影響。>>>deffunc1(x,y):

x1=x;y1=y z=100 print("infunc1(),x1=",x1)

print("infunc1(),y1=",y1)

print("infunc1(),z=",z) func2() return

>>>deffunc2():

x1=10;y1=20 z=0 print("infunc2(),x1=",x1) print("infunc2(),y1=",y1) print("infunc2(),z=",z)6.4變量的作用域局部變量>>>deffunc1(x,6.4變量的作用域全局變量是定義在函數(shù)外的變量,它擁有全局作用域。1.讀取全局變量全局變量在各函數(shù)內(nèi)部是只讀的,的用是受限的。例6-20函數(shù)外定義的全局變量在函數(shù)內(nèi)讀取(不修改)。

1#ex0620.py2basis=100#全局變量3deffunc1(x,y):#計(jì)算總分4sum=basis+x+y5returnsum7deffunc2(x,y):#計(jì)算平均分8avg=(basis+x*0.9+y*0.8)/39returnavg1011score1=func1(75,62)12score2=func2(75,62)6.4變量的作用域全局變量1#ex0620.py6.4變量的作用域全局變量2.在函數(shù)中定義了與全局變量同名的變量例6-21函數(shù)中定義了與全局變量同名的變量,實(shí)質(zhì)是局部變量。3.不允許在函數(shù)中先使用與全局變量同名的變量例6-22函數(shù)中使用全局變量,程序異常。6.4變量的作用域全局變量6.4變量的作用域global語(yǔ)句為了在函數(shù)內(nèi)部能讀寫(xiě)全局變量,Python提供了global語(yǔ)句,用于在函數(shù)內(nèi)部聲明全局變量。例6-23global語(yǔ)句的應(yīng)用。1#ex0623.py2basis=100#全局變量3deffunc4(x,y):4globalbasis#聲明basis是函數(shù)外的全局變量5print(basis)#1006basis=907sum=basis+x+y8returnsum10print(func4(75,62))11print(basis)#906.4變量的作用域global語(yǔ)句10print(f6.5Python的內(nèi)置函數(shù)數(shù)學(xué)運(yùn)算函數(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()sum((1,2,3,4)),sum((1,2,3,4),-10)6.5Python的內(nèi)置函數(shù)數(shù)學(xué)運(yùn)算函數(shù)函數(shù)名示例abs(6.5Python的內(nèi)置函數(shù)字符串運(yùn)算函數(shù)字符串作為一種最常用的數(shù)據(jù)類型,它提供了大小寫(xiě)轉(zhuǎn)換、查找替換、拆分合并等函數(shù)6.5Python的內(nèi)置函數(shù)字符串運(yùn)算函數(shù)6.5Python的內(nèi)置函數(shù)轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)主要用于不同數(shù)據(jù)類型之間的轉(zhuǎn)換,函數(shù)名示例bool()bool('str'),bool(0)int()int(3),int(3.6)float()float(3),float('3.4')complexcomplex('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)6.5Python的內(nèi)置函數(shù)轉(zhuǎn)換函數(shù)函數(shù)名示例bool()6.5Python的內(nèi)置函數(shù)序列操作函數(shù)序列包括字符串、列表、元組等,下列函數(shù)主要針對(duì)列表、元組兩種數(shù)據(jù)結(jié)構(gòu)。函數(shù)名功能說(shuō)明all()判斷可迭代對(duì)象的每個(gè)元素是否都為T(mén)rue值any()判斷可迭代對(duì)象的元素是否有為T(mén)rue值的元素range()產(chǎn)生一個(gè)序列,默認(rèn)從0開(kāi)始map()使用指定方法去操作傳入的每個(gè)可迭代對(duì)象的元素,生成新的可迭代對(duì)象filter()使用指定方法過(guò)濾可迭代對(duì)象的元素reduce()使用指定方法累積可迭代對(duì)象的元素zip()聚合傳入的每個(gè)迭代器中相同位置的元素,返回一個(gè)新的元組類型迭代器sorted()對(duì)可迭代對(duì)象進(jìn)行排序,返回一個(gè)新的列表reversed()反轉(zhuǎn)序列生成新的可迭代對(duì)象6.5Python的內(nèi)置函數(shù)序列操作函數(shù)函數(shù)名功能說(shuō)明al小結(jié)函數(shù)使用def關(guān)鍵字定義。在定義函數(shù)時(shí),參數(shù)表中的參數(shù)稱為形式參數(shù),形參可以分為位置參數(shù)、賦值參數(shù)、可變參數(shù)等類型。一個(gè)函數(shù)調(diào)用自身叫做遞歸調(diào)用。lambda函數(shù)是Python中的匿名函數(shù),,不需要使用def關(guān)鍵字定義。變量可以分為局部變量和全局變量。Python提供了global語(yǔ)句,用于在函數(shù)內(nèi)部聲明全局變量。Python提供了實(shí)現(xiàn)各種功能的內(nèi)置函數(shù),包括數(shù)學(xué)運(yùn)算、字符串運(yùn)算、轉(zhuǎn)換函數(shù)、序列操作函數(shù)等。小結(jié)函數(shù)使用def關(guān)鍵字定義。在定義函數(shù)時(shí),參數(shù)表中的參數(shù)稱作業(yè):(1)編寫(xiě)函數(shù)isodd(x),若x不是整數(shù),給出提示后退出程序;如果x為奇數(shù),返回True,如果x為偶數(shù),返回False。(2)編寫(xiě)函數(shù)change(str1),其功能是對(duì)參數(shù)str1進(jìn)行大小寫(xiě)轉(zhuǎn)換,其中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母;小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母;非英文字符不轉(zhuǎn)換。(3)編寫(xiě)并測(cè)試函數(shù)gcd(m,n)和lcm(m,n),功能是求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。(4)編寫(xiě)并測(cè)試函數(shù)reverse(x),輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。(5)用遞歸方法反轉(zhuǎn)一個(gè)字符串,例如“abcde”,反轉(zhuǎn)為“edcba”。(6)編寫(xiě)程序求12-22+32-42+…+972-982+992。作業(yè):(1)編寫(xiě)函數(shù)isodd(x),若x不是整數(shù),給出提示ThanksThanks6用函數(shù)實(shí)現(xiàn)代碼復(fù)用6用函數(shù)實(shí)現(xiàn)代碼復(fù)用第6章用函數(shù)實(shí)現(xiàn)代碼復(fù)用本章內(nèi)容函數(shù)的定義和調(diào)用函數(shù)的參數(shù)和返回值閉包和遞歸函數(shù)變量的作用域PYTHON的內(nèi)置函數(shù)第6章用函數(shù)實(shí)現(xiàn)代碼復(fù)用本章內(nèi)容6.1函數(shù)的定義和調(diào)用函數(shù)是實(shí)現(xiàn)某一特定功能的語(yǔ)句集合函數(shù)復(fù)用,提高了代碼的可重用性函數(shù)實(shí)現(xiàn)單一的功能,提高了程序的獨(dú)立性同一個(gè)函數(shù),通過(guò)接收不同的參數(shù),實(shí)現(xiàn)不同的功能,提高了程序的適應(yīng)性內(nèi)置函數(shù),用戶定義函數(shù)6.1函數(shù)的定義和調(diào)用6.1函數(shù)的定義和調(diào)用函數(shù)的定義使用def關(guān)鍵字deffuncname(paras):

statements

return[expression]●def關(guān)鍵字開(kāi)頭,后接函數(shù)名和圓括號(hào)()●paras是函數(shù)的參數(shù),參數(shù)之間用逗號(hào)分隔●statements是函數(shù)體●函數(shù)聲明以冒號(hào)結(jié)束,函數(shù)體內(nèi)需要縮進(jìn)●return語(yǔ)句用于結(jié)束函數(shù),將返回值傳遞給調(diào)用語(yǔ)句。不帶表達(dá)式的return返回None值。6.1函數(shù)的定義和調(diào)用函數(shù)的定義6.1函數(shù)的定義和調(diào)用函數(shù)的調(diào)用通過(guò)函數(shù)名加上一組圓括號(hào)來(lái)調(diào)用函數(shù),圓括號(hào)內(nèi)是參數(shù),多個(gè)參數(shù)之間用逗號(hào)分隔。def是可執(zhí)行語(yǔ)句,函數(shù)的調(diào)用必須在函數(shù)定義之后。>>>defgetcirclearea(r): print("圓的面積是:{:>8.2f}".format(3.14*r*r))

return>>>getcirclearea(3)圓的面積是:28.266.1函數(shù)的定義和調(diào)用函數(shù)的調(diào)用6.1函數(shù)的定義和調(diào)用函數(shù)的嵌套函數(shù)的嵌套定義在函數(shù)內(nèi)部定義的函數(shù),內(nèi)嵌的函數(shù)只能在該函數(shù)內(nèi)部使用,閉包應(yīng)用了函數(shù)的嵌套定義。函數(shù)的嵌套調(diào)用在一個(gè)函數(shù)的內(nèi)部調(diào)用其他函數(shù)的過(guò)程。嵌套調(diào)用是模塊化程序設(shè)計(jì)的基礎(chǔ),合理劃分不同的函數(shù),有利于實(shí)現(xiàn)程序的模塊化。6.1函數(shù)的定義和調(diào)用函數(shù)的嵌套6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)定義函數(shù)時(shí),參數(shù)表中的參數(shù)稱為形式參數(shù),也稱形參。調(diào)用函數(shù)時(shí),參數(shù)表中的參數(shù)稱為實(shí)際參數(shù),也稱實(shí)參。調(diào)用函數(shù)的過(guò)程就是將實(shí)參傳遞給形參的過(guò)程。1.位置參數(shù)函數(shù)調(diào)用時(shí),默認(rèn)情況下,實(shí)參將按照位置順序傳遞給形參。

defgetvolume(r,h): print("圓的體積是:{:>8.2f}".format(3.14*r*r*h))調(diào)用函數(shù)時(shí),執(zhí)行g(shù)etvolume(3,4)和getvolume(4,3),兩個(gè)函數(shù)的邏輯含義是不同的。6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)2.賦值參數(shù)Python提供了按照形參名稱輸入實(shí)參的方式,這種參數(shù)稱為賦值參數(shù)。>>>defgetscore(pe,eng,math,phy,chem): returnpe*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.16.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(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í),是將常量或變量的值傳遞給形參,是一種值傳遞的過(guò)程。列表、元組、字典等組合數(shù)據(jù)類型的變量用做函數(shù)參數(shù)時(shí),形參和實(shí)參之間傳遞的只是組合數(shù)據(jù)類型變量(參數(shù))的地址。6.2函數(shù)的參數(shù)和返回值函數(shù)的參數(shù)6.2函數(shù)的參數(shù)和返回值默認(rèn)參數(shù)定義函數(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ù)沒(méi)有傳入值,則直接使用默認(rèn)的值;如果默認(rèn)參數(shù)傳入了值,則使用傳入的新值替代。帶有默認(rèn)值的參數(shù)一定要位于參數(shù)列表的最后面。例6-8默認(rèn)參數(shù)的應(yīng)用。6.2函數(shù)的參數(shù)和返回值默認(rèn)參數(shù)6.2函數(shù)的參數(shù)和返回值函數(shù)的返回值返回值可以是任何數(shù)據(jù)類型return[expression]語(yǔ)句將表達(dá)式值作為返回值傳遞給調(diào)用方。不帶參數(shù)值的return語(yǔ)句返回None。例6-11return關(guān)鍵字的應(yīng)用。>>>defcompare(arg1,arg2):result=arg1>arg2

returnresult#函數(shù)體內(nèi)result值>>>btest=compare(10,9.99)#調(diào)用sum函數(shù)>>>print("函數(shù)的返回值:",btest)函數(shù)的返回值:True6.2函數(shù)的參數(shù)和返回值函數(shù)的返回值6.2函數(shù)的參數(shù)和返回值lambda函數(shù)匿名函數(shù),是一個(gè)lambda表達(dá)式,是不需要使用def關(guān)鍵字定義的函數(shù)。lambdaparas:expressionparas是可選的參數(shù)表;expression是函數(shù)表達(dá)式,不能包含分支或循環(huán)語(yǔ)句。expression的值做為lambda函數(shù)的返回值。應(yīng)用場(chǎng)景是定義簡(jiǎn)單的、能用一行表示的函數(shù),返回函數(shù)類型。Python具有函數(shù)式編程的特性,map、reduce、filter、sorted等函數(shù)都支持函數(shù)作為參數(shù),lambda函數(shù)可以方便地應(yīng)用在函數(shù)式編程中。6.2函數(shù)的參數(shù)和返回值lambda函數(shù)6.3閉包和遞歸函數(shù)閉包*Python支持閉包(closure)語(yǔ)法結(jié)構(gòu)。內(nèi)部函數(shù)引用了外部函數(shù)作用域的變量,這個(gè)內(nèi)部函數(shù)被稱為閉包。在Python中創(chuàng)建一個(gè)閉包需要滿足以下條件●閉包函數(shù)必須有嵌套函數(shù)?!袂短缀瘮?shù)需要引用外部函數(shù)中的變量。●外部函數(shù)需要將嵌套函數(shù)名作為返回值返回。6.3閉包和遞歸函數(shù)閉包*6.3閉包和遞歸函數(shù)遞歸函數(shù)函數(shù)在其定義或聲明中直接或間接調(diào)用自身的一種方法。遞歸的基本思想在求解一個(gè)問(wèn)題時(shí),將該問(wèn)題遞退簡(jiǎn)化為一個(gè)規(guī)模較小的同一問(wèn)題,并設(shè)法求得這個(gè)規(guī)模較小的問(wèn)題的解,在此基礎(chǔ)上再遞進(jìn)求解原來(lái)的問(wèn)題。如果經(jīng)遞退簡(jiǎn)化的問(wèn)題還難以求解,可以再進(jìn)行遞退簡(jiǎn)化,直至將問(wèn)題遞退簡(jiǎn)化到一個(gè)容易求解的基本問(wèn)題為止。在此基礎(chǔ)上進(jìn)行遞進(jìn)求解,直至求得原問(wèn)題的解。6.3閉包和遞歸函數(shù)遞歸函數(shù)6.3閉包和遞歸函數(shù)遞歸函數(shù)●一個(gè)遞歸的方法即為直接或間接地調(diào)用自身的方法;●任何一個(gè)遞歸方法都必須有一個(gè)遞歸出口。例6-16求斐波那契數(shù)列第i個(gè)元素的遞歸函數(shù)2deffib(i):3ifi==0:4return05elifi==1:6return17else:8returnfib(i-1)+fib(i-2)10print(fib(8))6.3閉包和遞歸函數(shù)遞歸函數(shù)6.4變量的作用域局部變量定義在函數(shù)內(nèi)的變量,其作用范圍是從函數(shù)定義開(kāi)始,到函數(shù)執(zhí)行結(jié)束。例6-19局部變量的作用域兩個(gè)函數(shù)func1()和func2()。分別定義了局部變量x1,y1,z,在各自的函數(shù)中互不影響。>>>deffunc1(x,y):

x1=x;y1=y z=100 print("infunc1(),x1=",x1)

print("infunc1(),y1=",y1)

print("infunc1(),z=",z) func2() return

>>>deffunc2():

x1=10;y1=20 z=0 print("infunc2(),x1=",x1) print("infunc2(),y1=",y1) print("infunc2(),z=",z)6.4變量的作用域局部變量>>>deffunc1(x,6.4變量的作用域全局變量是定義在函數(shù)外的變量,它擁有全局作用域。1.讀取全局變量全局變量在各函數(shù)內(nèi)部是只讀的,的用是受限的。例6-20函數(shù)外定義的全局變量在函數(shù)內(nèi)讀?。ú恍薷模?。

1#ex0620.py2basis=100#全局變量3deffunc1(x,y):#計(jì)算總分4sum=basis+x+y5returnsum7deffunc2(x,y):#計(jì)算平均分8avg=(basis+x*0.9+y*0.8)/39returnavg1011score1=func1(75,62)12score2=func2(75,62)6.4變量的作用域全局變量1#ex0620.py6.4變量的作用域全局變量2.在函數(shù)中定義了與全局變量同名的變量例6-21函數(shù)中定義了與全局變量同名的變量,實(shí)質(zhì)是局部變量。3.不允許在函數(shù)中先使用與全局變量同名的變量例6-22函數(shù)中使用全局變量,程序異常。6.4變量的作用域全局變量6.4變量的作用域global語(yǔ)句為了在函數(shù)內(nèi)部能讀寫(xiě)全局變量,Python提供了global語(yǔ)句,用于在函數(shù)內(nèi)部聲明全局變量。例6-23global語(yǔ)句的應(yīng)用。1#ex0623.py2basis=100#全局變量3deffunc4(x,y):4globalbasis#聲明basis是函數(shù)外的全局變量5print(basis)#1006basis=907sum=basis+x+y8returnsum10print(func4(75,62))11print(basis)#906.4變量的作用域global語(yǔ)句10print(f6.5Python的內(nèi)置函數(shù)數(shù)學(xué)運(yùn)算函數(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()sum((1,2,3,4)),sum((1,2,3,4),-10)6.5Python的內(nèi)置函數(shù)數(shù)學(xué)運(yùn)算函數(shù)函數(shù)名示例abs(6.5Python的內(nèi)置函數(shù)字符串運(yùn)算函數(shù)字符串作為一種最常用的數(shù)據(jù)類型,它提供了大小寫(xiě)轉(zhuǎn)換、查找替換、拆分合并等函數(shù)6.5Python的內(nèi)置函數(shù)字符串運(yùn)算函數(shù)6.5Python的內(nèi)置函數(shù)轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)主要用于不同數(shù)據(jù)類型之間的轉(zhuǎn)換,函數(shù)名示例bool()bool('str'),bool(0)int

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論