第六章 函數(shù)與模塊_第1頁(yè)
第六章 函數(shù)與模塊_第2頁(yè)
第六章 函數(shù)與模塊_第3頁(yè)
第六章 函數(shù)與模塊_第4頁(yè)
第六章 函數(shù)與模塊_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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)介

1第6章

函數(shù)與模塊第6章

函數(shù)與模塊6.1函數(shù)的基本概念6.2Python語(yǔ)言中的函數(shù)6.3函數(shù)應(yīng)用6.4模塊和Python標(biāo)準(zhǔn)庫(kù)26.1函數(shù)的基本概念1.什么是函數(shù)?基本思想給出語(yǔ)句序列,并給這個(gè)序列一個(gè)名字用來(lái)組織語(yǔ)句,便于掌控程序的開發(fā)功能切割,模塊化,結(jié)構(gòu)化一次定義多次使用函數(shù)是一種程序構(gòu)件,是構(gòu)成大程序的小程序先定義后調(diào)用通過(guò)函數(shù)名調(diào)用之調(diào)用時(shí)可傳遞參量調(diào)用執(zhí)行的是函數(shù)體(語(yǔ)句序列)調(diào)用產(chǎn)生返回值華東師大計(jì)算中心342.為什么要使用函數(shù)一次定義多次使用。使用函數(shù)可以避免重復(fù)代碼出現(xiàn),使程序更精煉。功能切割,模塊化,結(jié)構(gòu)化。使用函數(shù)可以使程序的結(jié)構(gòu)清晰,更易于閱讀和維護(hù)。并可實(shí)現(xiàn)自頂向下、分而治之、逐步求精的結(jié)構(gòu)化程序設(shè)計(jì)。作為一種程序構(gòu)件,完成特殊的功能。函數(shù)也是實(shí)現(xiàn)遞歸等算法必不可少的工具。華東師大計(jì)算中心函數(shù)與程序結(jié)構(gòu)通過(guò)函數(shù)可使程序?qū)崿F(xiàn)模塊化(modular).即使增加了代碼量!將主程序中并未重復(fù)出現(xiàn)的語(yǔ)句序列改寫成了一個(gè)函數(shù),原地方改成一個(gè)函數(shù)調(diào)用.代碼量不減反增,但程序可讀性大大增強(qiáng)!華東師大計(jì)算中心5成績(jī)管理系統(tǒng)添加成績(jī)查詢成績(jī)按學(xué)號(hào)個(gè)別查詢按姓名個(gè)別查詢按降序整體查詢修改記錄刪除記錄成績(jī)統(tǒng)計(jì)平均分?jǐn)?shù)不及格同學(xué)……退出模塊化,自頂向下、逐步細(xì)化結(jié)構(gòu)化程序設(shè)計(jì)軟件的開發(fā)方法采用自頂向下、逐步細(xì)化方法,把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分階段、分層次進(jìn)行,每個(gè)階段處理的問(wèn)題都控制在較易理解和處理的范圍內(nèi)。在程序設(shè)計(jì)中采用模塊化結(jié)構(gòu),將一個(gè)復(fù)雜的任務(wù)分解為若干相對(duì)簡(jiǎn)單并彼此較獨(dú)立的模塊,還可以將這些模塊再細(xì)分為若干更小的子模塊,以利于“分而治之”、“各個(gè)擊破”。函數(shù)正是實(shí)現(xiàn)結(jié)構(gòu)化程序設(shè)計(jì)必不可少的工具。華東師大計(jì)算中心6華東師大計(jì)算中心73.函數(shù)的類型自己編的函數(shù),如常用的main()Python內(nèi)建函數(shù),如abs()(語(yǔ)言的一部分)Python標(biāo)準(zhǔn)庫(kù)函數(shù),如math.sqrt()和string.split()對(duì)象的方法,如win.close()和p.draw()8Pythonbuilt-in

functionsLibrary(import)Userdefined(def)華東師大計(jì)算中心86.2Python語(yǔ)言中的函數(shù)6.2.1在Python語(yǔ)言中使用函數(shù)1.函數(shù)定義在使用函數(shù)之前,先要定義函數(shù),也就是確定函數(shù)的調(diào)用形式和函數(shù)具體功能的實(shí)現(xiàn)。在Python中,函數(shù)定義的格式為:def函數(shù)名(<參數(shù)表>):

函數(shù)語(yǔ)句塊 <return返回值>函數(shù)的對(duì)外接口:函數(shù)名、參數(shù)、返回值華東師大計(jì)算中心910例如:

定義求兩數(shù)最大值函數(shù)。

defMax(a,b):ifa>b:returnaelse:returnb說(shuō)明:參數(shù)可以沒有(無(wú)參函數(shù)),也可有多個(gè),多個(gè)參數(shù)間用逗號(hào)分隔。在函數(shù)定義時(shí)的參數(shù)又稱形參。形參是函數(shù)對(duì)外的接口。函數(shù)的形參需要在調(diào)用該函數(shù)時(shí)用具體的值(實(shí)參)替換。可通過(guò)return語(yǔ)句返回函數(shù)的值,也可不用return語(yǔ)句(或在return后不指定值),這樣,函數(shù)將返回“None”──Python中表示值為“空”的關(guān)鍵字。Python遇見return語(yǔ)句時(shí)即退出函數(shù)(即使后面還有語(yǔ)句也不再執(zhí)行)。華東師大計(jì)算中心2.在Python中調(diào)用函數(shù)華東師大計(jì)算中心11通過(guò)“函數(shù)名(參數(shù)表)”形式調(diào)用如果函數(shù)定義時(shí)有參數(shù),必須在調(diào)用時(shí)提供實(shí)際參數(shù)。實(shí)際參數(shù)個(gè)數(shù)、位置要與函數(shù)定義時(shí)相對(duì)應(yīng)。如果函數(shù)定義時(shí)沒有參數(shù),調(diào)用時(shí)也必須使用空括號(hào)。函數(shù)調(diào)用的形式直接以語(yǔ)句形式出現(xiàn)(此時(shí)不關(guān)心函數(shù)的返回值)

例如:happy()在表達(dá)式中出現(xiàn)(此時(shí)一般需要函數(shù)有返回值)例如:m=Max(35,x)print(”Max=”,Max(x,y))作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)

例如:max=Max(Max(x,y),z)函數(shù)調(diào)用的過(guò)程當(dāng)函數(shù)調(diào)用發(fā)生時(shí)------調(diào)用程序暫停函數(shù)形參被賦值為實(shí)參(按位置對(duì)應(yīng))執(zhí)行函數(shù)體控制返回調(diào)用點(diǎn)的下一條語(yǔ)句例6-2-2、例6-2-3

演示華東師大計(jì)算中心12函數(shù)編程補(bǔ)充實(shí)例:生日歌用函數(shù)減少重復(fù)代碼defmain():print(”Happybirthdaytoyou!”)print(”Happybirthdaytoyou!”)print(”Happybirthday,dearFred.”)print(”Happybirthdaytoyou!”)

defhappy():print(”Happybirthdaytoyou!”)defsingFred():happy()happy()print(”Happybirthday,dearFred.”)happy()重復(fù)代碼的壞處:1.費(fèi)時(shí)費(fèi)力2.代碼維護(hù)的一致性(例如:?jiǎn)卧~拼寫錯(cuò)誤)華東師大計(jì)算中心13編程實(shí)例:生日歌(續(xù))用參量增強(qiáng)函數(shù)的通用性(代碼可重用)defhappy():print(”Happybirthdaytoyou!”)defsing(person):happy()happy()print(”Happybirthday,dear”,person+“.”)happy()defmain():sing(”Fred”)sing(”Lucy”)sing(”Elmer”)華東師大計(jì)算中心14函數(shù)調(diào)用過(guò)程圖解華東師大計(jì)算中心153.函數(shù)定義與函數(shù)調(diào)用中參數(shù)間的關(guān)系函數(shù)定義時(shí)的參數(shù)稱為形式參數(shù)(簡(jiǎn)稱形參),函數(shù)調(diào)用時(shí)的參數(shù)稱為實(shí)際參數(shù)(簡(jiǎn)稱實(shí)參)。函數(shù)調(diào)用時(shí)所提供的實(shí)參個(gè)數(shù)應(yīng)與函數(shù)定義時(shí)的形參一致。例6-2-5老王賣西瓜,每天只賣總數(shù)的一半多兩個(gè)。編一程序:輸入西瓜總數(shù)(小于2000個(gè)),輸出所需賣的天數(shù)。華東師大計(jì)算中心16例6-2-5程序deff5(d):day=0x1=int(d)whilex1>1:x2=x1-(int(x1/2)+2)x1=x2day+=1returndayx=input("Entertotalnumber:")whileint(x)in(range(2000)):print("days:",f5(x))#callf5()x=input("Entertotalnumber:")

華東師大計(jì)算中心17函數(shù)調(diào)用時(shí)所提供的實(shí)際參數(shù)個(gè)數(shù)應(yīng)與函數(shù)定義

時(shí)一致。但Python也允許在定義函數(shù)時(shí)提供默認(rèn)值,即在函數(shù)定義時(shí)使用:def函數(shù)名(參數(shù)1,參數(shù)2=值……):……這種形式。這樣,在調(diào)用函數(shù)時(shí)如果沒有提供相應(yīng)的參數(shù),則使用該默認(rèn)值。例:deffunct(a=3):forninrange(a):forminrange(n+1):print("*",end='')print()funct()funct(5)華東師大計(jì)算中心18編程實(shí)例:求1~10的階乘之和deffact(n):factorial=1forcounterinrange(1,n+1):factorial*=counterreturnfactorialdefmain():s=0foriinrange(1,11):

s=s+fact(i)print("1!+2!+...+10!=",s)main()說(shuō)明:簡(jiǎn)潔,但系統(tǒng)調(diào)用耗時(shí)增多。華東師大計(jì)算中心194.關(guān)于程序的兩個(gè)順序(1)程序的執(zhí)行順序從入口點(diǎn)程序語(yǔ)句開始執(zhí)行,到執(zhí)行完畢。遇到調(diào)用函數(shù),執(zhí)行轉(zhuǎn)向被調(diào)用函數(shù),執(zhí)行完子函數(shù),返回調(diào)用處,繼續(xù)向下執(zhí)行。(2)程序中函數(shù)的書寫順序多個(gè)函數(shù)在定義的時(shí)候,其書寫順序與其被調(diào)用執(zhí)行的順序無(wú)關(guān)。函數(shù)的定義沒有先后之分,但要注意,函數(shù)是獨(dú)立的構(gòu)件,相互之間獨(dú)立,所以一般不要在一個(gè)函數(shù)體內(nèi)定義另一個(gè)函數(shù)。華東師大計(jì)算中心20函數(shù)在定義時(shí)的書寫順序與調(diào)用無(wú)關(guān)deff2(z):y=1print(z+y)deff1():x=5y=6f2(x)print(x+y)f1()華東師大計(jì)算中心21deff1():x=5y=6f2(x)print(x+y)deff2(z):y=1print(z+y)f1()6.2.2函數(shù)間的數(shù)據(jù)聯(lián)系局部變量和全局變量在一個(gè)函數(shù)中使用的變量稱為局部變量,不允許在函數(shù)外或另一函數(shù)中使用。在所有函數(shù)外定義的變量為全局變量,可以在各函數(shù)中使用。程序中過(guò)多使用全局變量,將使函數(shù)間的耦合變得緊密,破壞函數(shù)的獨(dú)立性。局部變量的作用域只是該函數(shù)內(nèi)部,所以不同的函數(shù)中可以有相同名稱的變量,它們?cè)诟髯缘暮瘮?shù)中互不干擾。當(dāng)函數(shù)執(zhí)行完畢,局部變量所占有的內(nèi)存空間也被釋放。華東師大計(jì)算中心22函數(shù)局部變量作用域演示函數(shù)中的變量都是局部的它們的作用域只是該函數(shù)內(nèi)部,而且函數(shù)執(zhí)行完畢,變量所占有的內(nèi)存空間也被釋放同一個(gè)變量名可以出現(xiàn)在不同的函數(shù)中,且互不干擾例:deff1():

x=5y=6#f1()中的y和f2()中的y互不相干

print(x+y)deff2():

y=1print(x+y)#出錯(cuò)!不能引用f1()中的xf1()f2()華東師大計(jì)算中心23全局變量與局部變量的說(shuō)明x='outside'y='global'deff():x='inside'print(x)print(y)f()Print(x)華東師大計(jì)算中心24在一個(gè)函數(shù)中使用的變量稱為局部變量,不允許在函數(shù)外或另一函數(shù)中使用。在函數(shù)外定義的變量是全局變量,允許在函數(shù)中使用。如果在函數(shù)中定義的局部變量與全局變量同名,則局部變量屏蔽全局變量2.函數(shù)與調(diào)用者之間的數(shù)據(jù)溝通變量作用域(scope):即可以引用該變量的區(qū)域例:函數(shù)f2獲知f1中某個(gè)變量的途徑是:

該變量被作為參數(shù)傳遞給f2,

該變量作為返回值傳遞。deff1():x=5y=6f2(x)print(x+y)deff2(z):y=1print(z+y)f1()華東師大計(jì)算中心25deff1():x=5y=6print(x+y)returnxdeff2():y=1print(f1()+y)f1()f2()函數(shù)與調(diào)用者之間的數(shù)據(jù)溝通:通過(guò)參量從調(diào)用者輸入值通過(guò)返回值向調(diào)用者輸出值3.傳值和傳地址調(diào)用函數(shù)時(shí)所提供的實(shí)際參數(shù)如果是一般變量,僅是單向向函數(shù)中提供值,在函數(shù)中進(jìn)行的修改不會(huì)影響函數(shù)外的該變量值。但列表除外。如果將列表對(duì)象作為函數(shù)的參數(shù),則向函數(shù)中傳遞的是列表的引用地址,這時(shí)在函數(shù)中對(duì)它的操作將直接改變函數(shù)外該列表的值(列表中的部分元素作為函數(shù)參數(shù)與一般變量相同)。華東師大計(jì)算中心26傳值和傳地址示例華東師大計(jì)算中心27defswap(p):p[0],p[1]=p[1],p[0]print('p0=',p[0],'p1=',p[1])a=[5,9]swap(a)print('a0=',a[0],'a1=',a[1])defswap(x,y):x,y=y,xprint('x=',x,'y=',y)a=5b=9swap(a,b)print('a=',a,'b=',b)6.3函數(shù)應(yīng)用1、使用函數(shù)模塊打印以下圖形。男孩女孩房子華東師大計(jì)算中心28華東師大計(jì)算中心29畫女孩畫一個(gè)圓(頭)畫一個(gè)三角形(身體)畫一個(gè)交叉線(腿)畫圓畫點(diǎn)線:[3,5]畫點(diǎn)線:[2,6]畫點(diǎn)線:[3,5]畫三角形畫交叉線畫線段:[1,7]

畫交叉線畫點(diǎn)線:[4,4]畫點(diǎn)線:[3,5]畫點(diǎn)線:[2,6]

畫點(diǎn)線[start,end]畫線段[start,end]華東師大計(jì)算中心30畫小女孩畫圓畫點(diǎn)線畫三角形畫交叉線畫點(diǎn)線畫線段畫交叉線畫點(diǎn)線華東師大計(jì)算中心31畫小男孩畫圓畫點(diǎn)線畫矩形畫點(diǎn)線畫線段畫交叉線畫點(diǎn)線畫房子畫矩形畫點(diǎn)線畫線段畫交叉線畫點(diǎn)線設(shè)計(jì)構(gòu)造工具函數(shù)首先構(gòu)造畫點(diǎn)線和連續(xù)線段的兩個(gè)工具函數(shù),在此基礎(chǔ)上再來(lái)構(gòu)建其它圖形。drawPoint(start,end):start和end為兩個(gè)整數(shù),表示點(diǎn)線的兩個(gè)星號(hào)出現(xiàn)的位置,函數(shù)的功能是打印一條點(diǎn)線,在start和end位置上打印兩個(gè)星號(hào)。drawLine(start,end):函數(shù)的功能是從start開始到end結(jié)束,打印一條連續(xù)星號(hào)構(gòu)成的線段。根據(jù)工具函數(shù)創(chuàng)建圓、矩形、交叉線及三角形構(gòu)件函數(shù)drawCilrcle()

drawInsect()

drawRectangle()

drawTriangle()使用圓、矩形、交叉線及三角形構(gòu)件函數(shù)畫女孩圖形

drawCilrcle()drawTriangle()drawInsect()華東師大計(jì)算中心322.自頂向下逐步求精的程序設(shè)計(jì)在程序設(shè)計(jì)中采用模塊化結(jié)構(gòu),將一個(gè)復(fù)雜任務(wù)分解為若干相對(duì)簡(jiǎn)單并彼此較獨(dú)立的模塊,還可將這些模塊再細(xì)分為若干更小的子模塊,以利于“分而治之”、“各個(gè)擊破”。例6-3-3華東師大計(jì)算中心33成績(jī)管理系統(tǒng)添加成績(jī)查詢成績(jī)按學(xué)號(hào)個(gè)別查詢按姓名個(gè)別查詢按降序整體查詢修改記錄刪除記錄成績(jī)統(tǒng)計(jì)平均分?jǐn)?shù)不及格同學(xué)……退出用Python實(shí)現(xiàn)頂部主函數(shù)及第一層函數(shù)定義框架華東師大計(jì)算中心34#functioninsertscoredefinsert():input("insert()----unfinished.")#functionfindscoredeffind():input("find()----unfinished.")#functioneditscoredefedit():input("edit()----unfinished.")#functiondeletescoredefdelete():input("delete()----unfinished.")#functionstatisticsscoredefstat():input("stat()----unfinished.")#functionmaindefmain():print("*************************************")print("scoremanagementsystem")print("*************************************")華東師大計(jì)算中心35

print("1.insertscore2.findscore")print("3.editrecord4.deletescore")print("5.statistics0.quit")whileTrue:choice=input("pleaseEnter(0-5):")ifchoice=='1':insert()elifchoice=='2':find()elifchoice=='3':edit()elifchoice=='4':delete()elifchoice=='5':stat()elifchoice=='0':breakelse:print("Entererror!Choiceagain.")print("Thankyouvisit!")#programeentrancemain()6.4模塊和Python標(biāo)準(zhǔn)庫(kù)1.什么是模塊?Python模塊是一個(gè).py文件,其中包含多個(gè)定義的常量和函數(shù)代碼(以及自定義數(shù)據(jù)類型、類等),供其他Python程序使用。例如,前面已經(jīng)使用過(guò)的math模塊。華東師大計(jì)算中心362.內(nèi)置模塊和非內(nèi)置模塊Python中的模塊分為內(nèi)置模塊和非內(nèi)置模塊(1)內(nèi)置模塊:通過(guò)__builtin__模塊提供的,該模塊不需手動(dòng)導(dǎo)入,啟動(dòng)Python時(shí)系統(tǒng)會(huì)自動(dòng)導(dǎo)入,任何程序都可以直接使用它們。該模塊定義了一些軟件開發(fā)中常用的函數(shù),可實(shí)現(xiàn)了數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)計(jì)算,序列的處理、常用字符串處理等。內(nèi)置函數(shù)內(nèi)置模塊中的函數(shù)稱內(nèi)置函數(shù)(有時(shí)又稱系統(tǒng)函數(shù))。內(nèi)置函數(shù)使用時(shí)不需加模塊名前綴。常用的內(nèi)置函數(shù):print()input()type()help()dir()常用數(shù)據(jù)類型函數(shù)華東師大計(jì)算中心38【例】?jī)?nèi)置模塊函數(shù)示例###

help(obj)在線幫助,obj可是任何類型,例如查看math模塊的內(nèi)容>>>help(math)##int("123")可將字符串"123"轉(zhuǎn)換為整數(shù)123>>>int("123")+int("555")678##

int(78.9)得到整數(shù)78(去掉尾部小數(shù))>>>int(78.9)78【例】?jī)?nèi)置模塊函數(shù)示例(續(xù))##reper(obj),將任意值轉(zhuǎn)為字符串,常用于構(gòu)造輸出字符串>>>x=10*3.25>>>y=200*200>>>

s='Thevalueofxis'+repr(x)+',andyis'+repr(y)+'...'

>>>print(

s

)Thevalueofxis32.5,andyis40000...##使用round(x,n)可按“四舍五入”法對(duì)x保留n位小數(shù)>>>round(78.3456,2)78.35##使用len(s)計(jì)算字符串的長(zhǎng)度>>>len("Goodmorning")12(2)非內(nèi)置模塊庫(kù)非內(nèi)置模塊以文件的形式存在于python的安裝目錄中,在使用前需要導(dǎo)入模塊。以下主要討論非內(nèi)置模塊的使用方法。3.模塊的使用要使用(非內(nèi)置)模塊中的函數(shù),必須首先導(dǎo)入該模塊。Python中使用如下語(yǔ)句來(lái)導(dǎo)入模塊:import模塊名其中模塊名也可以有多個(gè),多個(gè)模塊之間用逗號(hào)分隔。該語(yǔ)句通常放在程序的開始部分。可使用內(nèi)置函數(shù)dir()函數(shù)檢查當(dāng)前已導(dǎo)入的模塊。(使用dir(模塊名)可查看模塊的內(nèi)部,如:dir(math)。)華東師大計(jì)算中心424.調(diào)用(非內(nèi)置)模塊中的函數(shù)模塊導(dǎo)入后,在程序中使用“模塊名.函數(shù)名”形式來(lái)使用其中的函數(shù)。例如:首先導(dǎo)入math模塊:importmath。

然后執(zhí)行以下語(yǔ)句計(jì)算(a2+b2)的平方根:print(math.sqrt(a*a+b*b))。華東師大計(jì)算中心435.省略“函數(shù)名.”前綴使用import語(yǔ)句導(dǎo)入模塊后,在程序中調(diào)用模塊中的函數(shù)時(shí)要加上“模塊名.”前綴。為了簡(jiǎn)化,可以使用以下語(yǔ)句代替import語(yǔ)句: from模塊名import*這樣,在調(diào)用函數(shù)時(shí)可以省略“模塊名.”前綴。但要注意所引入模塊中的函數(shù)名等不能與現(xiàn)有系統(tǒng)中的產(chǎn)生沖突。華東師大計(jì)算中心44非內(nèi)置模塊導(dǎo)入的三種方法使用方式一導(dǎo)入模塊import[模塊名]調(diào)用函數(shù)(或字面常量)[模塊名].[函數(shù)或字面常量]使用方式二導(dǎo)入模塊的函數(shù)from[模塊名]import[函數(shù)名]

調(diào)用該函數(shù)[函數(shù)]使用方式三導(dǎo)入模塊中的所有函數(shù)from[模塊名]import*調(diào)用函數(shù)(或字面常量)

[函數(shù)或字面常量]【例1】方式一示例(以數(shù)學(xué)庫(kù)為例)>>>##導(dǎo)入數(shù)學(xué)庫(kù)>>>importmath>>>##查看圓周率π常數(shù)>>>math.pi3.141592653589793>>>##求x的y次方pow(x,y)>>>math.pow(math.pi,2)9.869604401089358>>>##計(jì)算邊長(zhǎng)為8.3和10.58,兩邊夾角為37度的三角形的面積的表達(dá)式為:

>>>8.3*10.58*math.sin(37.0/180*3.1416)/226.423945174044125math庫(kù)中的常用函數(shù)常用函數(shù)描述常用函數(shù)描述pi常數(shù)π(近似值)pi正函數(shù)e常數(shù)e(近似值)cos(x)余函數(shù)fabs

求絕對(duì)值

tan(x)正切函數(shù)trunc(x)將一個(gè)浮點(diǎn)數(shù)結(jié)尾為整數(shù)

ceil(x)大于等于x的最小整數(shù)factorial(x)求x的階乘floor(x)小于等于x的最大整數(shù)pow(x,y)求x的y次方

sqrt(x)求x的平方根

【例2】方式二和方法三示例>>>frommathimportsqrt

#引入數(shù)學(xué)庫(kù)中的sqrt函數(shù)>>>sqrt(16)4.0如果希望導(dǎo)入math模塊中所有的函數(shù)定義,而非僅僅是sqrt函數(shù)可以使用以下形式:>>>frommathimport*#引入數(shù)學(xué)庫(kù)中所有的函數(shù)>>>sqrt(16)4.0注意:引入方式不同,對(duì)應(yīng)的函數(shù)的使用方式不同,還要注意所引入模塊中的函數(shù)名等與現(xiàn)有系統(tǒng)中不產(chǎn)生沖突。【例3】使用random模塊生成隨機(jī)數(shù)fromrandomimport*輸入三次random(),觀察每次的值輸入三次randint(1,10),觀察每次的值輸入:result1=[randint(1,100)foriinrange(10)]、result2=[randint(1,100)foriinrange(10)]

然后分別顯示result1和result2輸入:foriinrange(4):

print(sample([1,2,3,4,5,6,7,8],8))(sample函數(shù)從列表里隨機(jī)選擇“不重復(fù)”項(xiàng)。)華東師大計(jì)算中心496.用戶自定義模塊*【例3-2-17】自定義函數(shù)庫(kù)示例。創(chuàng)建和使用求三角形面積的自定義函數(shù)庫(kù)。(1)創(chuàng)建py文件例如triangle.py,保存在Python33目錄下,此時(shí)py文件名就是用戶自定義的模塊庫(kù)名。文件的內(nèi)容為:定義一個(gè)CalArea函數(shù)用于計(jì)算三角形面積,函數(shù)需要獲取三條邊的數(shù)據(jù),在函數(shù)調(diào)用時(shí)賦值給變量a,b,c。importmathdefCalArea(a,b,c):

s=(a+b+c)/2.0

area=math.sqrt(s*(s-a)*(s-b)*(s-c))

returnarea(2)導(dǎo)入用戶自定義的模塊庫(kù)>>>importtriangle(3)調(diào)用用戶自定義的函數(shù)>>>area=triangle.CalArea(12,33,25)>>>area126.8857754044952>>>華東師大計(jì)算中心51上節(jié)介紹了可以將自己創(chuàng)建的Python程序文件作為一個(gè)模塊導(dǎo)入。每個(gè).py文件在運(yùn)行時(shí)都有一個(gè)__name__屬性。如果作為模塊導(dǎo)入,該屬性值為模塊名;如果文件獨(dú)立運(yùn)行,該屬性值為“__main__”。通過(guò)對(duì)其屬性值的判斷,使文件在兩種情況下都能正確使用。很多Python程序采用全函數(shù)結(jié)構(gòu),其中有一個(gè)main()函數(shù),在主程序使用以下代碼作為程序入口(c語(yǔ)言編程風(fēng)格):if__name__=="__main__":

main()7.將.py文件用作模塊*8.Python“包”*在Python中,與模塊相關(guān)的還有一個(gè)“包”的概念。包是一個(gè)目錄,其中包含一組模塊和一個(gè)_init_.py文件(記錄該目錄中的所有.py文件,也可為空)??墒褂靡韵滦问皆L問(wèn)包中的函數(shù):

包名.模塊名.函數(shù)()通??蓪⑺玫乃心K放在當(dāng)前目錄的某一子文件夾內(nèi),然后在該文件夾中建一個(gè)空的_init_.py文件,以方便訪問(wèn)。華東師大計(jì)算中心526.4.2Python標(biāo)準(zhǔn)庫(kù)隨著每個(gè)Python版本的發(fā)布,會(huì)同時(shí)發(fā)布該版本的Python標(biāo)準(zhǔn)庫(kù)。Python的標(biāo)準(zhǔn)庫(kù)中包含很多模塊,為操作系統(tǒng)、解釋器和互聯(lián)網(wǎng)之間的交互提供了豐富的工具。其中既有Python語(yǔ)言自身特定的類型和聲明,也包含一些只用于少數(shù)程序的模塊。所有這些模塊都得到充分測(cè)試,可以用來(lái)作為應(yīng)用開發(fā)的起點(diǎn)。華東師大計(jì)算中心53標(biāo)準(zhǔn)庫(kù)中最基本的模塊支持內(nèi)建數(shù)據(jù)類型操作的模塊,如前面提到的用于數(shù)學(xué)計(jì)算操作的math模塊;為復(fù)數(shù)提供類似操作的cmath模塊;以及實(shí)現(xiàn)常用字符串處理的string模塊等。os模塊:包含了常用的操作系統(tǒng)功能。sys模塊:通過(guò)該

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論