python面向?qū)ο蟾拍罴熬毩?xí)題_第1頁
python面向?qū)ο蟾拍罴熬毩?xí)題_第2頁
python面向?qū)ο蟾拍罴熬毩?xí)題_第3頁
python面向?qū)ο蟾拍罴熬毩?xí)題_第4頁
python面向?qū)ο蟾拍罴熬毩?xí)題_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余38頁可下載查看

下載本文檔

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

文檔簡介

1、面向?qū)ο蠹熬毩?xí)題L面向?qū)ο?.1面向?qū)ο蟾拍蠲嫦驅(qū)ο笫且环N編程思想,是對(duì)現(xiàn)實(shí)世界中的事物進(jìn)行抽象的方式。應(yīng) 用到代碼編程設(shè)計(jì)中,是一種建立現(xiàn)實(shí)世界事物模型的方式。1.2面向?qū)ο蠛兔嫦蜻^程區(qū)別面向過程關(guān)注的是完成工作的步驟,面向?qū)ο箨P(guān)注的是誰能完成工作。 面向?qū)ο笫窃谕瓿晒ぷ鞯臅r(shí)候關(guān)注哪些個(gè)體能夠完成對(duì)應(yīng)的工作,找到對(duì)應(yīng) 的個(gè)體即可完成對(duì)應(yīng)任務(wù)。2.類2.1類的概念類是一系列事物的統(tǒng)稱,同類事物必定具有相同的特征。日常事物的特征根 據(jù)特性分為狀態(tài)和行為,對(duì)應(yīng)到類中是變量和方法。特征分類:狀態(tài)÷變量(成員變量)行為÷方法(成員方法)統(tǒng)稱:類的成員2 2類定義語法格式CIaSS類

2、名:PaSS1234567 " U 演示類的定文與對(duì)象的創(chuàng)建 "CIaSS Cat:PaSS說明:PaSS是空語句,不具有任何意義,僅為了保持程序結(jié)構(gòu)完整性2. 3類名的命名規(guī)則類名命名規(guī)范:滿足大駝峰命名規(guī)則3.對(duì)象3.1對(duì)象的概念對(duì)象是類的具體表現(xiàn)形式,是實(shí)際存在的個(gè)體 < 類是一系列事物的統(tǒng)稱)3. 2創(chuàng)建對(duì)象語法格式對(duì)象名=類名()炳CIaSS Cat:7PaSS8910#創(chuàng)建對(duì)象11ICatI = Cat()3.3注意事項(xiàng)對(duì)象的創(chuàng)建不限制數(shù)量,一個(gè)類可以創(chuàng)建任意個(gè)數(shù)的對(duì)象4.成員變量4.1成員變量的概念成員變量用于描述對(duì)象的固有狀態(tài)或?qū)傩浴?. 2定義成員變

3、量語法格式(公有屬性/公有變量)ClaSS類名:def _init_(self):self.變量名I =值1234567演示類的成員變量self.變量名 2 = NOneSeIf.type = 11 波斯貓SeIfname = NOne4.3成員變量定義語法格式(獨(dú)有屬性/獨(dú)有變量)對(duì)象名變量名=值CIaSS Cat:5 def _init_(SeIf):6 = “波斯貓“ self .name = NOneI8910CatI = Cat()11Print(catltype)12 ="大 j巾1113Print(catlname)14#給CatI穿衣月艮15catl

4、. cloth = ”紅色I(xiàn)4.4公有變量與獨(dú)有變量的區(qū)別 公有變量在_init_方法中聲明,每個(gè)對(duì)象都具有該變量 獨(dú)有變量在創(chuàng)建對(duì)象后聲明,只有當(dāng)前對(duì)象具有此變量 定義對(duì)象的獨(dú)有變量時(shí),如果獨(dú)有變量名與公有變量名相同,視為 修改公有變量的值;如果獨(dú)有變量名與公有變量名不相同,視為定 義新的獨(dú)有屬性 NOne含義是為空,表示沒有具體的數(shù)據(jù)4. 5變量的調(diào)用格式取值:對(duì)象名.變量名賦值:對(duì)象名變量名=值5成員方法5 1成員方法概念成員方法用于描述對(duì)象的固有行為52定義成員方法語法格式格式一(無參方法):ClaSS類名:def 方法名(self):方法體1 U t, U2 演示類的成員方法3 Bt

5、9t,uCIaSS Cat:5 def _iit_(SQlf):6 lf. = “波斯貓 self. name = NOne8def eat(self):Print(II貓吃魚T910格式二(有參方法)ClaSS類名:def方法名(SeIt形參形參2方法體資料.CIaSS Cat:defI_init_(SeIr):= ”波斯貓11SeIfnam© = NOne9def10斗1112def1253調(diào)用成員方法語法格式45678eat(self): Print(M 貓吃魚)CIimb(SeIfeterl): prit(n貓會(huì)爬樹丿爬了d米“ %meter)格式一(調(diào)用無參方法):對(duì)象名方

6、法名()45678gIQ111213141516CIaSS Cat:def _iit_(self):="波斯貓”SeIfname = Nonedef eat(self):TPrLnt(Il貓吃魚Jdef climb(selfjmtr): Print(II貓會(huì)爬樹爬了d米'CatI = Cat()ICatl.eat() |% meter)格式二(調(diào)用有參方法):對(duì)象名方法名(實(shí)參1,實(shí)參24567891011121314151617ClaSS Cat:def _init_(self):="波斯貓', = NOnedef eat(self):P

7、rinteI貓吃魚“)def CIimb(SeIfmeter):Print(H貓會(huì)爬樹,爬了 d米'CatI = CatoCTti.eat()C2ticlimb(35)X meter)6 _init_方法6.方法的作用_init_方法,也稱為構(gòu)造方法,創(chuàng)建對(duì)象時(shí)為對(duì)象初始化成員變量6. 2定義方法語法格式格式一:def init(self):self.變量名1二值13 CIaSS Cat:5 Idef init (self): |6 lf.t7pe = “波斯貓” self. name = NOne格式二:def init(self,形參 1,形參 2,):seif._屬性名I=形參1

8、 seif._屬性名2 =形參2CIaSS Cat:def _init_(SeIfJ type, name): self._type = type self._name = name6. 3_init_方法調(diào)用和執(zhí)行 _init_方法在創(chuàng)建對(duì)象時(shí)被運(yùn)行,無需手工調(diào)用即可執(zhí)行 _init 方法中如果有形參,在創(chuàng)建對(duì)象時(shí)需要傳遞對(duì)應(yīng)的實(shí)參64魔術(shù)方法魔術(shù)方法是在類中聲明、定義的方法,執(zhí)行時(shí)無需手工調(diào)用,自動(dòng)執(zhí)行O7. _Str_方法7.1_Str_方法的作用Str_方法是在使用Print函數(shù)打印輸出對(duì)象到屏幕時(shí)被調(diào)用的方法,用于返回對(duì)象的規(guī)范化字符串表現(xiàn)形式7.2定義_str_方法語法格式def

9、Str(self):4.5789101112return打印對(duì)象是顯示的信息_init_(self): 二“波斯貓“SeI = NOnedef eat(self): printer 吃魚”)def CIimb(Self,>mete廠):Printce貓會(huì)爬樹,爬了d米” meter)14.1516171819Cief _Str_(SeIf):return E打印了一只貓”CatI = cat()Print(Catl)&成員方法調(diào)用類成員&1成員方法中調(diào)用成員變量語法格式self.變量名24.56789101112131415161718'浜示或員方認(rèn)埼

10、說匸IH 9 MCIaSS Cat:CIef _init_(self):self.type = ”波斯貓“ = NOne# def introduce(seLf):# P廠int("我是一只,我列空" (set/, typej sef. name)def introduce(self):Print(,我是一只s,我叫我穿的衣BK是% (ISJftype, self.namj SeH.color)Catl = cat() ="大帥"catl.color ="紅色"CatIintroduce()&

11、;2成員方法中調(diào)用成員方法語法格式self.方法名(實(shí)參1,實(shí)參2CIaSS Cat:def CatCh(Self):# L 鉄起# 2 那住# 3 咬死 self.jump() SeIf.grasp() self.bite()def jump(self):Printcl貓?zhí)饋鞪def grasp(self):PrintCl貓抓住了老鼠”)def bite(self):Print ("貓咬住了老鼠”)CatI = CatoCatI .etxh()8.3 SelfSeIf僅出現(xiàn)在成員方法中t指代執(zhí)行該方法的對(duì)象。9封裝9.1封裝的作用封裝操作可以對(duì)受訪問保護(hù)的成員進(jìn)行功能開放的控制,

12、達(dá)到保護(hù)數(shù)據(jù)不被非法訪問的目的9. 2定義私有變量語法格式sei f._屬性名=值2" U2 演示私有化屬性與封裝3 Jf, U ItCIaSS Card:5def _init_(SeIf):self.card_id = NOne se PWd 二 None9. 3定義私有方法語法格式def _方法名(Self ,形參1,形參2方法體45672910CIaSS Card:def _init_(SGIf): self.card-id = None self._PWd = NOnedefget_PWCl(Self):return self._PWd9.4標(biāo)準(zhǔn)封裝語法格式變量私有化格式:s

13、elf._屬性名二值提供公共的訪問器格式:def get_屬性名(self):return self.屬性名提供公共的修改器格式:def set_屬性名(self,屬性名):self._屬性名=屬性名T " L'演示私右化屬性與沁3 QCIaSS Card:def _init_(Self): SefICardJid = NOne SeIf._PWd = NOnedef get_pWd(SeIf): return self._ Wd891011def Set-PWd(Self, PWd): self. PWld 二 PWd121310.類變量o.類變量的概念類變量是定義在類中,

14、不屬于某個(gè)具體對(duì)象的特征,被所有對(duì)象共同使 用的特征10. 2定義類變量語法格式ClaSS類名:變量名=值10. 3調(diào)用類變量語法格式賦值格式:類名.類變量名=值取值格式:類名.類變量名(推薦)對(duì)象名.類變量名(不推薦)10.4注意事項(xiàng) 類變量推薦使用類名取值訪問,也可以使用對(duì)象名取值訪問 類變量只能通過類名修改;使用對(duì)象名調(diào)用類變量修改類變量的值 時(shí)會(huì)創(chuàng)建新的對(duì)象獨(dú)有變量;如果此時(shí)對(duì)象具有同名對(duì)象變量,則 修改對(duì)應(yīng)的變量值 類變量可以私有化IL類方法11.1類方法的概念類方法是定義在類中,不屬于某個(gè)具體對(duì)象的行為,被所有對(duì)象共同使 用的行為11.2定義類方法基本語法CIaSS類名:c Ias

15、sniethoddef方法名(els,形參1,形參2 ,):方法體ClaSS Chinese:5 I COUntry ="中國"def _init_(SeIfJid_numJname): self.id_num = id_num self. name = nameCIaSSmethod def ShOW_COUntry(cis):Print(II我是中國人J910111211. 3調(diào)用類方法語法格式類名.類方法名(實(shí)參1,實(shí)參2(推薦)對(duì)象名類方法名(實(shí)參1,實(shí)參2(不推薦)11.4注意事項(xiàng) 類方法中不允許使用實(shí)例變量和實(shí)例方法 類方法中允許使用類變量和類方法,通過第一個(gè)參

16、數(shù)ClS進(jìn)行 實(shí)例方法中允許使用類變量和類方法12靜態(tài)方法12.1定義靜態(tài)方法語法格式CIaSS類名:stati Cinethoddef方法名(形參1,形參2):方法體CIaSS Chinese:COUntry = *lllIM*def _ini_(self, id-num, name):SeIf. id_num = id_num self, name = name9倉StatiCmQthOd def ShOWo :Print 今人大氣不錯(cuò)")12. 2調(diào)用舲態(tài)方法語法格式類名.靜態(tài)方法名(實(shí)參1,實(shí)參2,)(推薦)對(duì)象名靜態(tài)方法名(實(shí)參1,實(shí)參2(不推薦)12. 3各種方法定義規(guī)則

17、 只訪問成員變量的方法,定義成實(shí)例方法 只訪問類變量的方法,定義類方法 既訪問成員變量,也訪問類變量的方法,定義成實(shí)例方法 既不訪問成員變量,也不訪問類變量,定義成靜態(tài)方法資料.資料.練習(xí)題1概念理解要求:1. 如何理解面向?qū)ο缶幊蹋∣OP)2. 什么是類,什么是對(duì)象提示:1. 類和對(duì)象有兩個(gè)層面的含義:類是對(duì)一類具體的事物的抽象的概括,具有 相似內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律的實(shí)體的集合,具有相同屬性和行為事物的統(tǒng)稱,是抽 象的;對(duì)象是一個(gè)具體的事物,在現(xiàn)實(shí)世界中可以是看得見摸得著的,可以直接 使用的2. 擁有相同(或者類似)屬性和行為的對(duì)象都可以抽像出一個(gè)類練習(xí)題2定義類、創(chuàng)建對(duì)象要求:1. Pyth

18、On中如何定義一個(gè)類CIaSS類名:方法.CIaSS Test:def test(self):PaSS2. 類(ClaSS)由哪三個(gè)部分構(gòu)成類的名稱、類的屬性、類的方法3. 類名的命名規(guī)則是什么大駝峰命名法4. PythOn中如何通過類創(chuàng)建對(duì)象,請用代碼進(jìn)行說明#創(chuàng)建對(duì)象#對(duì)象名=類名()CIaSS Human:牛定義類資料.PaSSman = HUmar()# 創(chuàng)建對(duì)象5. 如何在類中定義一個(gè)方法,請用代碼進(jìn)行說明ClaSS HUman:#定義run方法def run(self):Print(H正在奔跑”)6. 定義一個(gè)PeOPIe類 使用PeOPle類 創(chuàng)建一個(gè)【nayun對(duì)象后 添加CO

19、mPany 屬性,值是"阿里巴巴";創(chuàng)建一個(gè)Wangjianl ing對(duì)象,添加COnIPany屬性,值 是”萬達(dá)集團(tuán)”ClaSS People:PaSSmayun = PeopleO # 創(chuàng)建 IlIayUn 對(duì)象mayun. COmPany ="阿里巴巴" #為對(duì)象添加屬性WangjianIin = PeopleO # 創(chuàng)建 Wangjianlin 對(duì)象Wangjianl in. COmPany = ”萬達(dá)集團(tuán)”7. 定義一個(gè)水果類,然后通過水果類,創(chuàng)建蘋果對(duì)象、橘子對(duì)象、西瓜對(duì)象 并分別添加上顏色屬性ClaSS Fruit:apple = FrUi

20、tOapple. COlOr = ”紅色”O(jiān)range = FrUitoOrange .color = ” 橙色"Watermelon = FrUit()Watermelon = ”綠色”8.定義一個(gè)汽車類,并在類中定義一個(gè)InOve方法,然后分別創(chuàng)建BMW_X9、AUDl_A9對(duì)象,并添加顏色、馬力、型號(hào)等屬性,然后分別打印出屬性值、調(diào)用 move方法ClaSS Car:def InOVe(Self):Print("汽車正在移動(dòng)”)BMW_X9 = CarOBMW_X9. COlOr = H 白色”BMW_X9. horsepower = " 300"

21、BMW_X9. model = "X9BMW_X9. move()Print("這輛s %s的馬力是s匹,%(BMW-X9. COlOn BMWJ9. model, BMW-X9. horsepower)資料.AUDLA9 = CarOAUDLA9. COlOr = ” 黑色”AUDI_A9. horsepower = "320"AUDI_A9. model = ',A9"AUDl_A9. move()print("這輛%s %s 的馬力是%s 匹"%(AUDI_A9. color, AUDI_A9. model,A

22、UDI_A9- horsepower)提示:1. 可以在通過類創(chuàng)建出對(duì)象后,再為對(duì)象添加屬性:對(duì)象名.屬性名=值 的 方式添加2. 調(diào)用對(duì)象的方法和調(diào)用普通函數(shù)的一樣,使用()來實(shí)現(xiàn)調(diào)用,只不過調(diào)用 方法需要使用:對(duì)象名方法名()來進(jìn)行調(diào)用練習(xí)題3要求:_init方法、Str_方法、self1._init_方法有什么作用,如何定義當(dāng)使用類名()的方法去創(chuàng)建對(duì)象的時(shí)候PythOn解釋器會(huì)自動(dòng)調(diào)用init方法資料.因此可以在_init_方法中做一些初始化的設(shè)定在每次創(chuàng)建新對(duì)象時(shí),都自動(dòng)完成這些初始化的設(shè)定ClaSS Human:def _init_(SeIf):#注意名字不能寫錯(cuò),否則就只是一個(gè)普

23、通的方法PaSS2. _Str_方法有什么作用,使用時(shí)應(yīng)注意什么問題如果類中定義了_str_方法,那么當(dāng)使用Print打印對(duì)象時(shí),打印出的信息是_Str_方法的返回值注意點(diǎn):_Str_方法必須有返回值,且必須返回一個(gè)字符串類型的值3. 方法中的,'self"代表什么類中定義的許多方法,除了之后會(huì)提到的類方法和靜態(tài)方法以外,其他任何的 方法當(dāng)被對(duì)象調(diào)用時(shí),PythOn解釋器都會(huì)把這個(gè)對(duì)象作為這個(gè)方法的第一個(gè)參數(shù)傳 入所以定義這些方法時(shí),必須寫上第一個(gè)參數(shù),往往寫成SeIf去接收因此在這些方法中,SeIf就可以直接被當(dāng)做當(dāng)前對(duì)象來使用4. 在類中定義_init_和_$憶_方法時(shí),

24、必須提供形參嗎,第一個(gè)形參又必須是SeIf嗎?為什么?同上但這個(gè)參數(shù)名可以寫成別的,但往往寫成SeIf ,便于編寫程序的人區(qū)分提示:1. _init_方法可以在創(chuàng)建對(duì)象時(shí),為對(duì)象實(shí)現(xiàn)一些初始化的操作,提供一 些默認(rèn)屬性2. Str_方法可以在使用Print打印對(duì)象時(shí),打印出Str_方法的返回值3. _Str_方法必須擁有返回值,并且返回值的數(shù)據(jù)類型格式只能是字符串 類型練習(xí)題4判斷以下說法是否正確,并說明理由要求:1. 類就好比一個(gè)模型,可以預(yù)先定義一些統(tǒng)一的屬性或者方法,然后通過這 個(gè)模型創(chuàng)建出具體的對(duì)象TrUe2. 類是抽象的,而對(duì)象是具體的、實(shí)實(shí)在在的一個(gè)事物TrUe3. 擁有相同(或者

25、類似)屬性和行為的對(duì)象都可以抽像出一個(gè)類TrUe4. 一個(gè)類只能創(chuàng)建出一個(gè)對(duì)象FaISe通過類可以創(chuàng)建無數(shù)個(gè)不同的對(duì)象例外:使用了單例模式的,只會(huì)創(chuàng)建出一個(gè)對(duì)象(就業(yè)班課程會(huì)講解單例模式)5. _init_方法在創(chuàng)建對(duì)象時(shí),可以完成一些初始化的操作,完成一些默認(rèn) 的設(shè)定TrUe6. 類是抽象的,而對(duì)象是具體的、實(shí)實(shí)在在的一個(gè)事物TrUe7. _Str_方法可以沒有返回值FaISe必須有返回值&_Str_方法可以返回除字符串以外的其他類型的數(shù)據(jù)FalSe必須返回字符串類型的數(shù)據(jù)練習(xí)題1面向?qū)ο髴?yīng)用1要求:1. 任意定義一個(gè)動(dòng)物類2. 使用init方法»在創(chuàng)建某個(gè)動(dòng)物對(duì)象時(shí),為其

26、添加name ' age、 color, food等屬性,如“熊貓” ,5, “黑白” ,66,“竹子”3. 為動(dòng)物類定義一個(gè)run方法,調(diào)用m方法時(shí)打印相關(guān)信息如打印出“熊 貓正在奔跑”4. 為動(dòng)物類定義一個(gè)get_age方法»調(diào)用get_age方法時(shí)打印相關(guān)信息,如 打印出“這只熊貓今年5歲了”5. 為動(dòng)物類定義一個(gè)eat方法,調(diào)用eat方法時(shí)打印相關(guān)信息如打印出“熊 貓正在吃竹子”6. 通過動(dòng)物類分別創(chuàng)建出3只不同種類的動(dòng)物,分別調(diào)用它們的方法,讓他 們“跑起來”,“吃起來”CIaSS Animal:def _init_(self, name, age, color,

27、food):self, name = name # 為對(duì)象設(shè)置 IIallle 屬性Se 1 f. age = age #為對(duì)象設(shè)置age屬性self. COlOr = COlOr # 為對(duì)象設(shè)置 COlOr 屬性self, food = food #為對(duì)象設(shè)置food屬性# run方法def run(self):print("%s 正在奔跑"%self. name)#打印年齡的方法def get_age(self):Print("這只s 今年%s"%(self. name, Str(SeIf. age)#吃方法def eat(self):Print(&

28、quot;%s 正在吃%s"%(self. name, self, food)#貓CatTOin = AnimaI("Tom", 3, "gray", "fish")#老鼠mouseJerry = AnimalCJerry", 3, "brown","奶酪")狗WatChdOg = Anima1("旺財(cái)",2, "white", "ineat")tom_cat. run()tom_cat. get_age()tom_

29、cat. eatO資料.額外知識(shí)函數(shù)在學(xué)習(xí)函數(shù)之前,首先要明白為什么要學(xué)習(xí)函數(shù)?學(xué)習(xí)了函數(shù),能提高我們的工作效率,編程語言里面,離不開函數(shù)提高效率體現(xiàn)在哪里?函數(shù)可以封裝一段代碼,只需要我們定義一次,就可以做到多次使用T.函數(shù)是用來干什么的?每一個(gè)函數(shù)都有對(duì)應(yīng)的意義,我們定義函數(shù),都是為了實(shí)現(xiàn)某種單一的功能,也就是說,函數(shù)就是為了實(shí)現(xiàn)某種功能,實(shí)現(xiàn)某些需求的9.定義函數(shù)那我們?nèi)绾味x函數(shù)?def:聲明一個(gè)函數(shù)的關(guān)鍵字J這就 鬥Fhon的解釋器,我這昱寫的是一個(gè)國數(shù)11 聲明 2函數(shù) 的代:.3def Say-hell明 /一 一 一 符 OrAnL(IelIJSdyjlelIo:表示我給這個(gè)函

30、數(shù)取的名字,這個(gè)名字要 符合標(biāo)識(shí)符的規(guī)則,做到見名知意的效果、這個(gè)()很精髓,為了轟示代碼的靈活性Q里面能 夠隨意的放我們想要傳的參數(shù)cl實(shí)現(xiàn)這個(gè)SayJellOS個(gè)功能的代科段42 調(diào)用 !一的代硼殳寫了一個(gè)函數(shù)我們只有調(diào)用它的時(shí)候,這個(gè)函數(shù)才是有意義的Say_hello資料.任何一個(gè)函數(shù),必須要先聲明,再調(diào)用當(dāng)我們調(diào)用say_hello這個(gè)函數(shù)的時(shí)候,我們能看到這樣的一句打印輸出,這就說明這個(gè)函數(shù)被調(diào)用T.任何一個(gè)函數(shù),必須要做到先定義(先聲明),后調(diào)用如果我們將調(diào)用提前,我們會(huì)看到:SaV hello!AUnresolzed reference ,say.hello, more,., (

31、Ctrl+F1)環(huán)能識(shí)別SaLhHlo這個(gè)方法def Say_hello():Print("hello")為什么?因?yàn)樵蹅働ythOn是一門解釋性語言,代碼是從上到下一行一行執(zhí)行的,所以當(dāng)代 碼運(yùn)行到第一行的時(shí)候,我們調(diào)用Say_hello()的時(shí)候,并沒有對(duì)應(yīng)的方法,這就 好比:我們把say.hello()當(dāng)做一個(gè)做飯的功能,我們只有先做飯,才能吃飯,先 有做飯這個(gè)功能,我們才能做飯10函數(shù)的復(fù)用性下面說一下函數(shù)參數(shù)的使用,那么,在說參數(shù)之前,我們先了解一下函數(shù)的復(fù)用性,使用函數(shù)到底好在哪里?比如我有這么一個(gè)需求,我想遍歷一個(gè)ITOo之間所有的數(shù),這很簡單i = 0Whi

32、le i <=100:Print ii+=l這樣我就能獲取I-IOO之間所有的數(shù) 我們將這一段代碼封裝到一個(gè)函數(shù)里面去,這樣我們就很方便的能夠在任何地方 打印1-100之間所有的數(shù)了def traverse ():i = OWhiIe i <= 100:Print (il y i += 1traverse ()9596B :3 99如果我們想在其他的頁面也打印這個(gè)I-IOO之間所有的數(shù),那我們還用寫這個(gè)代碼么?答案是肯定不需要再寫這么多行代碼了1.確定這個(gè)函數(shù)的包名,我取的名字是UtilS資料.* utls.py M demo.pydef traverse ():WhiIe i &

33、lt;= 100:4Prin t(i)_i +二 16 traverse ()2.導(dǎo)包py盧 demo.pyiport UtilSj*ils. traverse ()93.我們來看一下控制臺(tái)能不能獲取到1-100之間所有的數(shù)demo959899100PIoCeSS finished Kith exit Code 0資料.也是可以的,所以說,這個(gè)函數(shù)封裝了我們一段代碼,實(shí)現(xiàn)了打印1-100之間所有 的數(shù)那我們在工作中,實(shí)際上一個(gè)大的項(xiàng)目是有很多重復(fù)的功能的,比如聯(lián)網(wǎng)的操作,我們不可能每次都這樣一行行的寫代碼,所以,我們把它封裝到一個(gè)函數(shù)里面,下次想聯(lián)網(wǎng)獲取直接調(diào)用我們寫好的函數(shù)就行了,這就是函數(shù)

34、的好處,復(fù)用性,這就 是函數(shù)的可多次調(diào)用IL 函數(shù)的參數(shù)言歸正傳,我們來說說函數(shù)參數(shù)的使用剛剛我們已經(jīng)能夠獲取到1-100之間所有的數(shù)了,但是我們現(xiàn)在改需求了,我們希望能夠獲取100-200之間的所有的數(shù),這個(gè)怎么辦呢?這個(gè)也很簡單def traverse】():Print (i)i += 1traversel ()我們再定義一個(gè)函數(shù)traversel(),初始值改成100,當(dāng)滿足小于等于200的情況打印就行了ok,沒問題,那我現(xiàn)在再改需求了,我希望打印出200到400之間所有的數(shù),怎么辦?也很簡單:def traverse2 ():3 L-J WhiIe <<= 400:Prin

35、t (i)5 A 2 i ÷= 1t 匚 averse2()那我如果再改需求,我想打印10-50之間的所有數(shù),我是不是又要定義一種方法 traverse3()?顯然,我們發(fā)現(xiàn),其實(shí)這幾個(gè)函數(shù),相似的地方還是挺多的我們僅僅只是改變了 i 的初始值,以及WhiIe i <=多少的一個(gè)值而已,這樣的代碼,顯然是過于死板的, 我們需要把這個(gè)代碼寫活,這里,我們就用到了參數(shù)了實(shí)際上,如果我們i的初始值和我們循環(huán)的條件i<=多少的值要是能隨心所欲的 根據(jù)我們自己的需求變化就好了,所以這里,我定義了兩個(gè)變量,一個(gè)是m 個(gè)是n, In表示循環(huán)的初始值,n表示你 循環(huán)的終止值,也就是i&l

36、t;=n我們循環(huán)的條件utls.pydemo.pytraverse2 ()WhiIe i <= nIe)CO寸LO9def traverse2 0: i = mWhile i <=Print(i)1i += 1traverse2 ()如果我們想遍歷100-200之間的所有數(shù),那我們傳進(jìn)來100,200就能夠代替這個(gè)m,n的值就好了,這里,咋們函數(shù)提供了這樣的一種方式我們把100這個(gè)值傳給了叫200這個(gè)值傳給了 n資料.* Utik-Py那么i = IOOWhile i <= 200:我們就能打印出100到200之間所有的數(shù)了,現(xiàn)在,我希望打印200-300之間的數(shù),就可以直接

37、使用就行了traverse2 (IOOJ 200)traverse2 (200j 300)一行代碼就搞定了,所以說,有參數(shù)的函數(shù)是靈活的那么參數(shù)又分為形參和實(shí)參:在函數(shù)上定義的參數(shù)只是一個(gè)占位符,被稱為形式參數(shù),簡稱形參在調(diào)用時(shí)傳入的參數(shù)是具體的內(nèi)容,被稱為實(shí)際參數(shù),簡稱實(shí)參In和n僅僅只是一個(gè)占位而已,敎們?nèi)绻粋髦颠M(jìn)來,是沒有任何的意義的 這就是函數(shù)的參數(shù)的使用12. 函數(shù)的返回值再來說說函數(shù)的返回值比如我們有這么的一個(gè)需求:求ITOO之間的和:也非常簡單,12345678traverse(m, n):i = inSUnI = OWhiIe i <= n:1 定義Y初始值為0 2.s

38、um+=iSUm += i用SUm去記錄毎一次循環(huán)后相加的總和為多少這就等于“2十3十4十十100i十二1Print (SIInI)traverse (1, IOO)I我們看一下控制臺(tái)輸出的結(jié)果:5050n Ubb» f C 't(c<*主交|初QMAI5151-*PtC> (xBJ>b4 *t c< BjSI好了,現(xiàn)在我們還要一個(gè)需求,我們希望能求出ITOO之間所有數(shù)的平均值(這里 提示一下,I-IOO之間有100個(gè)數(shù)我們可以用100-1 + 1的方式表示)這個(gè)怎么做呢?資料.traverse O WhiIe i <= n def traver

39、se (m, n):i = mSUnI = OWhiIe i <= n:1÷DSUnl += i5050/(100Z> 5050/ 10050.5Print (SUnI / (n - m +print (S traverse(l,100)如果我們把這個(gè)求平均值的代碼放traverse()函數(shù)里面合理嗎?目前來說好像要求達(dá)到了,但是我們在回過頭來看看,如果我們繼續(xù)想要遍歷m-n之間所有的數(shù),次函數(shù)還能用嗎?顯然是不能的,因?yàn)檫@個(gè)函數(shù)已經(jīng)被我們改變了功能,他是求n-r之間所有數(shù)的平均值那我們前面那么多的地方,都引用到了打印m-n之間所有的數(shù),現(xiàn)在卻變成了求平均值了,這樣合理嗎?顯然是不合理的所以,函數(shù)的功能必須是獨(dú)立的,也就是說,我們還需要定義一個(gè)求平均值的函 數(shù)6060I 100def get_average_VaIUe (m, n, SUnI):Print(Sm / (n - m + 1)求I-IOO之間所有數(shù)的平均值,現(xiàn)在I-IOO的m, n的值我都知道,但是SUnl的值我知道嗎?def traverse (m, n):i = mSUnl = OWhiIe i <= n:SUnI += iLrJCj2lt ( ¾Etraverse ()函數(shù)里面SIlnl的值為d % SI看看控制臺(tái)的輸出UtiISC UigJ,ApD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論