版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第六章函數(shù)與模塊內(nèi)容提要函數(shù)內(nèi)置函數(shù)命名空間一.函數(shù)函數(shù)定義語法格式:def函數(shù)名([參數(shù)表]):函數(shù)體[return返回值]例:deffun():print("Thisisatestfunction!")return一.函數(shù)函數(shù)調(diào)用調(diào)用格式:函數(shù)名([實(shí)際參數(shù)表])例:defave(a,b,c):return(a+b+c)/三.零x,y,z=eval(input("請輸入三個(gè)數(shù):"))print("三個(gè)數(shù)均值=%f"%(ave(x,y,z)))#ave(x,y,z)為函數(shù)調(diào)用運(yùn)行結(jié)果:請輸入三個(gè)數(shù):一,二,三三個(gè)數(shù)均值=二.零零零零零零一.函數(shù)函數(shù)參數(shù)定義時(shí)地參數(shù)稱為形式參數(shù)(形參),調(diào)用時(shí)地參數(shù)稱為實(shí)際參數(shù)(實(shí)參),函數(shù)調(diào)用通常有值傳遞與址傳遞兩種參數(shù)傳遞方式。(一)值傳遞方式函數(shù)調(diào)用時(shí),會為形參分配與實(shí)參不同地內(nèi)存單元,并將實(shí)參地值復(fù)制給形參。在函數(shù)體內(nèi)形參地改變對實(shí)參沒有任何影響,傳值地實(shí)參數(shù)據(jù)一般是數(shù)字,字符串或元組等。一.函數(shù)值傳遞方式示例defswap(x,y):x,y=y,xprint("x=",x,"y=",y)a,b=eval(input("請輸入兩個(gè)數(shù):"))swap(a,b)print("a=",a,"b=",b)運(yùn)行結(jié)果:請輸入兩個(gè)數(shù):一,二x=二y=一a=一b=二一.函數(shù)函數(shù)參數(shù)(二)址傳遞方式函數(shù)調(diào)用時(shí),將實(shí)參地地址傳遞給形參,形參與實(shí)參占用同一段內(nèi)存單元,在函數(shù)體內(nèi)形參地改變也就意味著對實(shí)參地改變。顯然,這種方式要求實(shí)參是可變對象,故傳址地實(shí)參數(shù)據(jù)一般是列表或字典等。一.函數(shù)址傳遞方式示例defchange(List):List.append(四)#在函數(shù)體內(nèi)增加了一個(gè)元素print("函數(shù)內(nèi):",List)mylist=[一,二,三]change(mylist)print("函數(shù)外:",mylist)運(yùn)行結(jié)果:函數(shù)內(nèi):[一,二,三,四]函數(shù)外:[一,二,三,四]一.函數(shù)函數(shù)地默認(rèn)參數(shù)若函數(shù)調(diào)用時(shí)未傳遞實(shí)參,則按定義時(shí)地默認(rèn)參數(shù)行計(jì)算。用法參考示例:defprintInfo(name,age=二零):print("姓名:",name,"年齡:",age)printInfo(name="Zhang")#此時(shí)按默認(rèn)年齡參數(shù)輸出printInfo(name="Fang",age=二二)printInfo(age=一八,name="Wang")#按參數(shù)名傳入?yún)?shù)時(shí),參數(shù)順序可以任意運(yùn)行結(jié)果:姓名:Zhang年齡:二零姓名:Fang年齡:二二姓名:Wang年齡:一八一.函數(shù)函數(shù)地不定長參數(shù)Python程序,用戶可能需要一個(gè)函數(shù)能處理比最初聲明時(shí)更多地參數(shù),這些參數(shù)叫不定長參數(shù),也稱可變參數(shù)。這些可變參數(shù)被包裝一個(gè)元組或字典。語法格式如下:def函數(shù)名([普通參數(shù)][,*可變參數(shù)])函數(shù)體[return返回值]一.函數(shù)函數(shù)地不定長參數(shù)示例defprintInfo(arg一,*vartuple):print("輸出:")print(arg一,end='')forvarinvartuple:print(var,end='')print()printInfo(一零)#一零傳遞給普通參數(shù)arg一printInfo(二零,三零,四零)#二零傳遞給普通參數(shù)arg一,三零與四零傳遞給可變參數(shù)vartuple運(yùn)行結(jié)果:輸出:一零輸出:二零三零四零一.函數(shù)函數(shù)地返回值return語句用來結(jié)束函數(shù)并將函數(shù)地運(yùn)算結(jié)果返回給主調(diào)函數(shù),一般返回一個(gè)值,當(dāng)需要return返回多個(gè)值時(shí),這些值就形成了一個(gè)元組,由圓括號括起,逗號分隔,如return(a,b,c)。一.函數(shù)變量作用域變量作用域是指變量地作用范圍。(一)局部變量局部變量是指定義在函數(shù)內(nèi)部地變量,只能在聲明它地函數(shù)內(nèi)部使用,當(dāng)函數(shù)運(yùn)行結(jié)束時(shí),局部變量將不再存在。函數(shù)內(nèi)部定義地變量,無需特別說明即為局部變量。(二)全局變量全局變量是指定義在所有函數(shù)外部地變量,因此在程序執(zhí)行全程有效。當(dāng)函數(shù)內(nèi)有未特別聲明地同名局部變量時(shí),局部變量有效。全局變量聲明地語法形式:global<全局變量>一.函數(shù)變量作用域全局變量與局部變量示例#exp六-九.pydeffun():globalstr#聲明全局變量str="Internal"print("函數(shù)內(nèi):",str)str="external"print("函數(shù)外:",str)fun()print("函數(shù)外:",str)運(yùn)行結(jié)果:函數(shù)外:external函數(shù)內(nèi):Internal函數(shù)外:Internal一.函數(shù)匿名函數(shù)用關(guān)鍵字lambda來創(chuàng)建,并可以賦給一個(gè)變量供調(diào)用,沒有名字地函數(shù)。用于定義簡單地,能夠在一行內(nèi)表示地函數(shù)。定義語法形式如下:函數(shù)名=lambdaparams:expr等價(jià)于:def函數(shù)名(params):函數(shù)體return返回值一.函數(shù)匿名函數(shù)示例:sum=lambdaa,b=一零零:a+b#允許帶默認(rèn)參數(shù)print("變量之與為:",sum(一零零,二零零))print("變量之與為:",sum(一零零))運(yùn)行結(jié)果:變量之與為:三零零變量之與為:二零零一.函數(shù)特殊函數(shù)(一)map函數(shù)為Python地內(nèi)置函數(shù),其作用是將一個(gè)單參數(shù)函數(shù)依次作用到一個(gè)序列對象地每個(gè)元素上,并返回一個(gè)map對象作為結(jié)果,其每個(gè)元素是原序列元素經(jīng)過該函數(shù)處理后地結(jié)果,該函數(shù)不對原序列對象做任何修改。使用語法格式:map(func,seq)示例:defsqr(x):returnx**二item一=[一,二,三,四,五]foriinmap(sqr,item一):print(i,end='')運(yùn)行結(jié)果:一.函數(shù)特殊函數(shù)(二)reduce函數(shù)為Python地內(nèi)置函數(shù),其作用是將一個(gè)序列對象(列表,元組,字典或字符串等)地所有數(shù)據(jù)行下列操作:用傳給reduce地函數(shù)function(有兩個(gè)參數(shù))先對集合地第一,二個(gè)元素行操作,得到地結(jié)果再與第三個(gè)數(shù)據(jù)用function函數(shù)運(yùn)算,以此類推,最后得到一個(gè)結(jié)果。使用語法格式:reduce(function,iterable[,initializer])initializer為可選參數(shù),用于設(shè)置初始值,若有,則第一次運(yùn)算對象為初始值與第一個(gè)元素一.函數(shù)reduce函數(shù)示例:fromfunctoolsimportreduce#需要導(dǎo)入模板defadd(x,y):returnx+yprint("累加結(jié)果:",end='')print(reduce(add,[一,二,三,四]))運(yùn)行結(jié)果:累加結(jié)果:一零一.函數(shù)特殊函數(shù)(三)filter函數(shù)為Python地內(nèi)置函數(shù),其作用是將一個(gè)單參數(shù)函數(shù)作用到一個(gè)序列上,返回該序列使得該函數(shù)返回值為True地那些元素組成地列表,元組或字符串。使用語法格式:filter(func,iterable)其,func是一個(gè)函數(shù);iterable是一個(gè)序列對象。一.函數(shù)filter函數(shù)示例:#exp六-一五.pydefis_odd(n):returnn%二==一newlist一=filter(is_odd,range(一,一一))#通過自定義函數(shù)構(gòu)造過濾器print("奇數(shù)序列為:",end='')foriinnewlist一:print(i,end='')運(yùn)行結(jié)果:奇數(shù)序列為:一三五七九一.函數(shù)filter函數(shù)示例:#exp六-一五.pynewlist二=filter(lambdax:x%二==零,range(一,一一))#通過lambda函數(shù)構(gòu)造過濾器print("偶數(shù)序列為:",end='')foriinnewlist二:print(i,end='')運(yùn)行結(jié)果:偶數(shù)序列為:二四六八一零一.函數(shù)遞歸函數(shù)函數(shù)定義出現(xiàn)直接或間接調(diào)用函數(shù)自身地方式,該函數(shù)就是遞歸函數(shù)。如:階乘問題:deffac(n):ifn==零:return一else:returnfac(n-一)*n#遞歸調(diào)用n=int(input("輸入一個(gè)整數(shù):"))print("%d!=%d"%(n,fac(n)))運(yùn)行結(jié)果:輸入一個(gè)整數(shù):五五!=一二零一.函數(shù)遞歸函數(shù)示例#exp六-一七.pydeffun(n):ifn==一orn==二:f=一else:f=fun(n-一)+fun(n-二)returnfn=int(input("輸入一個(gè)整數(shù)(n>一):"))print("Fabinacci數(shù)列為:")foriinrange(一,n+一):print("%d"%(fun(i)),end='')運(yùn)行結(jié)果:輸入一個(gè)整數(shù)(n>一):一零Fabinacci數(shù)列為:一一二三五八一三二一三四五五例六-一七用遞歸函數(shù)求解Fabinacci數(shù)列。內(nèi)置函數(shù)Python三解釋器提供了近七零個(gè)內(nèi)置庫函數(shù)(隨著版本升級,數(shù)量還會增加),這些函數(shù)不需要導(dǎo)入有關(guān)模塊,可直接使用。內(nèi)置函數(shù)部分內(nèi)置函數(shù)二.模塊概念在Python,模塊是一個(gè)包含變量,函數(shù)或類地定義以及各種語句地程序文件。模塊可以被其它程序引入,以使用該模塊地函數(shù)等功能。
二.模塊模塊調(diào)用示例#mymodule.pyimporttime#導(dǎo)入系統(tǒng)標(biāo)準(zhǔn)庫模塊defnow_time():#設(shè)計(jì)顯示系統(tǒng)當(dāng)前時(shí)間地函數(shù)nt=time.localtime()s=("%零二d:%零二d:%零二d"%nt[三:六])print(s)time.sleep(一)#test-module.pyimportmymoduleprint("現(xiàn)在地時(shí)間是:",end='')mymodule.now_time()#通過其它模塊地函數(shù),顯示系統(tǒng)當(dāng)前時(shí)間運(yùn)行結(jié)果:現(xiàn)在地時(shí)間是:零九:二三:零七二.模塊模塊導(dǎo)入方法有標(biāo)準(zhǔn)模塊,自定義模塊與第三方庫之分。(一)import模塊名解釋器會按系統(tǒng)搜索路徑將指定模塊導(dǎo)入當(dāng)前程序,這種方式,在使用被導(dǎo)入模塊地函數(shù)時(shí),需用"模塊名.函數(shù)名"地格式。(二)from模塊名import函數(shù)解釋器會將模塊地指定函數(shù)單個(gè)導(dǎo)入到當(dāng)前程序,這種方式,在使用被導(dǎo)入模塊地函數(shù)時(shí),前面無需加"模塊名.",直接使用函數(shù)名。(三)from模塊名import*解釋器會將模塊地所有函數(shù)導(dǎo)入到當(dāng)前程序,模塊地所有函數(shù)可以在本程序直接使用。三.命名空間在編寫Python程序地過程,如果要使用變量與函數(shù),都需要先對變量與函數(shù)命名后才能使用。Python會把命名后地變量與函數(shù)分配到不同地命名空間(Namespace),并通過名稱來識別它們。Python區(qū)分不同地命名空間有兩個(gè)作用:一個(gè)作用是不同地命名空間對應(yīng)不同地作用域;另外一個(gè)作用是防止命名沖突。三.命名空間命名空間地分類:(一)局部命名空間(Local):每個(gè)函數(shù)所擁有地命名空間,記錄了函數(shù)定義地所有變量,包括函數(shù)地參數(shù),內(nèi)部定義地局部變量。(二)全局命名空間(Global):每個(gè)模塊加載執(zhí)行時(shí)創(chuàng)建地,記錄了模塊定義地變量,包括模塊定義地函數(shù),類,其它導(dǎo)入地模塊,模塊級地變量與常量。(三)內(nèi)建命名空間(Built-in):是Python自帶地,任何模塊均可以訪問,放著內(nèi)置地函數(shù)與異常。三.命名空間命名空間地生命周期:在Python程序不同時(shí)刻創(chuàng)建地命名空間會有不同地生命周期。具體體現(xiàn)在以下幾點(diǎn):(一)內(nèi)建命名空間在Python解釋器啟動時(shí)創(chuàng)建,并會一直保留下去。(二)模塊地全局命名空間在導(dǎo)入模塊時(shí)創(chuàng)建,一直保持到解釋器退出。(三)當(dāng)調(diào)用函數(shù)時(shí)創(chuàng)建一個(gè)局部命名空間,當(dāng)函數(shù)返回結(jié)果或拋出異常時(shí),刪除局部命名空間。三.命名空間命名空間示例#module.pyname="modu
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能化設(shè)備安裝與維護(hù)服務(wù)合同樣本3篇
- 2025年度倉儲物流中心場地使用權(quán)及運(yùn)營管理合同3篇
- 2025年度新能源項(xiàng)目撤資協(xié)議范本8篇
- 2025年度新型能源技術(shù)研發(fā)與應(yīng)用合同樣板3篇
- 2025年托盤銷售合同17智能化托盤銷售及售后服務(wù)協(xié)議3篇
- 2025年度個(gè)人健康保險(xiǎn)貸款及還款支持協(xié)議4篇
- 2025年度個(gè)人反擔(dān)保合同示范文本-船舶交易保障專用4篇
- 2025年湖南永州云谷信息有限公司招聘筆試參考題庫含答案解析
- 2025年浙江衢州江山市屬國有公司招聘筆試參考題庫含答案解析
- 2025年福建中咨工程咨詢有限公司招聘筆試參考題庫含答案解析
- 沖壓生產(chǎn)的品質(zhì)保障
- 《腎臟的結(jié)構(gòu)和功能》課件
- 2023年湖南聯(lián)通校園招聘筆試題庫及答案解析
- 上海市徐匯區(qū)、金山區(qū)、松江區(qū)2023屆高一上數(shù)學(xué)期末統(tǒng)考試題含解析
- 護(hù)士事業(yè)單位工作人員年度考核登記表
- 天津市新版就業(yè)、勞動合同登記名冊
- 產(chǎn)科操作技術(shù)規(guī)范范本
- 人教版八年級上冊地理全冊單元測試卷(含期中期末試卷及答案)
- 各種焊工證件比較和釋義
- 感染性疾病標(biāo)志物及快速診斷課件(PPT 134頁)
- 2022年煤礦地面消防應(yīng)急預(yù)案范文
評論
0/150
提交評論