版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章函數(shù)與模塊王小寧目錄Contents2函數(shù)011.函數(shù)的定義與調(diào)用方法函數(shù)(Function)即功能,是組織好的、可重復(fù)使用的、用來實(shí)現(xiàn)單一或某些相關(guān)聯(lián)功能的代碼段。Python中的函數(shù)分為系統(tǒng)函數(shù)和自定義函數(shù)兩類。系統(tǒng)自帶的函數(shù)功能即前文介紹的內(nèi)置函數(shù),是系統(tǒng)已經(jīng)寫好的,比如輸出函數(shù)print()、輸入函數(shù)input()、最大值函數(shù)max()、計(jì)數(shù)函數(shù)count()、類型函數(shù)type()等,此處不再贅述本章主要學(xué)習(xí)自定義函數(shù)。1.函數(shù)的定義與調(diào)用方法自定義函數(shù)的語法格式:def函數(shù)名(a1,a2,……):
語句序列 [returnx]其中,def是系統(tǒng)保留字,函數(shù)體相對(duì)于def關(guān)鍵字必須保持一定的縮進(jìn),語句序列是函數(shù)體,returnx是返回值。要注意的是:在定義函數(shù)時(shí),參數(shù)可以有,也可以沒有,return也可以缺失。2.函數(shù)的參數(shù)函數(shù)的參數(shù)分為形參和實(shí)參。形參全稱為“形式參數(shù)”是在定義函數(shù)名和函數(shù)體的時(shí)候使用的參數(shù),目的是用來接收調(diào)用該函數(shù)時(shí)傳遞的參數(shù)。它僅僅是形式上的參數(shù),表明一個(gè)函數(shù)里面哪個(gè)位置有哪個(gè)參數(shù)而已,不代表具體的值。實(shí)參全稱為“實(shí)際參數(shù)”,是一個(gè)實(shí)際存在的參數(shù),可以是字符串或是數(shù)字等。一般出現(xiàn)在函數(shù)調(diào)用的時(shí)候,需要傳遞具體的值。2.函數(shù)的參數(shù)(1)位置參數(shù)調(diào)用函數(shù)時(shí),在函數(shù)的參數(shù)位置按順序輸入了相應(yīng)的數(shù)據(jù),即位置參數(shù)。例4-5:編寫函數(shù),功能是將前2個(gè)參數(shù)相加,減去第3個(gè)參數(shù),返回結(jié)果,并調(diào)用。defcalculate(a,b,c):
returna+b-c
print(calculate(3,4,2))2.函數(shù)的參數(shù)(2)關(guān)鍵字參數(shù)如果一個(gè)函數(shù)有多個(gè)參數(shù),在調(diào)用時(shí),若不想按位置順序提供實(shí)參,那么可以通過按形參的變量名來傳遞參數(shù)。這種參數(shù)傳遞方式稱為關(guān)鍵字參數(shù)。關(guān)鍵字參數(shù)必須跟在位置參數(shù)之后,并且它們的順序并不重要。例4-6:編寫函數(shù),功能是將前2個(gè)參數(shù)相加,減去第3個(gè)參數(shù),返回結(jié)果,并調(diào)用。defcalculate(a,b,c):
returna+b-c
print(calculate(3,c=2,b=4))2.函數(shù)的參數(shù)(3)默認(rèn)值參數(shù)在自定義函數(shù)時(shí),形參可以指定默認(rèn)值。若形參有默認(rèn)值,要將其放置于關(guān)鍵字參數(shù)之后。例4-7:編寫函數(shù),功能是將前2個(gè)參數(shù)相加,減去第3個(gè)參數(shù),返回結(jié)果,并調(diào)用。要求默認(rèn)第2個(gè)參數(shù)為5。defcalculate(a,c,b=5,):
returna+b-c
print(calculate(3,2))2.函數(shù)的參數(shù)(4)可變長參數(shù)Python中可變長度參數(shù)有兩種形式,分別是*args和**kwds。*args將接收到的多個(gè)實(shí)參放在一個(gè)元組中,**kwds將接收到的鍵值對(duì)實(shí)參存入字典中。例4-8:定義函數(shù):包含3個(gè)參數(shù)和不定長參數(shù)*args,并分別輸出3個(gè)參數(shù)和*args。defdemo(a,b,c,*p):print(a,b,c)print(p)demo(1,2,3,4,5,6)3.變量的作用域變量的作用域就是變量起作用的范圍,或者說是可以被哪部分程序訪問,也可稱為命名空間。一個(gè)變量在函數(shù)內(nèi)部和外部定義的,其作用范圍不同,根據(jù)程序中變量所在的位置和作用范圍,變量分為局部變量和全局變量。局部變量可以說就是指函數(shù)內(nèi)部定義的變量,僅在函數(shù)內(nèi)部作用,當(dāng)函數(shù)退出時(shí),變量將不存在。全局變量指在函數(shù)外定義的變量,在整個(gè)程序執(zhí)行過程中有效。全局變量如若要在函數(shù)內(nèi)部使用,須在函數(shù)內(nèi)部先用關(guān)鍵字global聲明,格式為:global<全局變量>4.遞歸函數(shù)在函數(shù)的定義中,函數(shù)內(nèi)部的語句調(diào)用函數(shù)本身,為遞歸函數(shù)。例4-12:使用遞歸函數(shù)來定義計(jì)算階乘的函數(shù)。defjiecheng(n):ifn==0:return1else:returnn*jiecheng(n-1)#調(diào)用print(jiecheng(8))5.lambda匿名函數(shù)Python使用lambda語句來創(chuàng)建匿名函數(shù)。lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡單很多。lambda函數(shù)的語法只包含一個(gè)語句:<函數(shù)名>=lambda<參數(shù)列表>:<表達(dá)式>例4-13:定義f=lambdax:x+1,并調(diào)用。f=lambdax:x+1
print(f(3))模塊與包021.模塊為了編寫代碼復(fù)用,只有函數(shù)還不夠,因?yàn)楹瘮?shù)的作用范圍只在當(dāng)前的python文件內(nèi),在另一個(gè)文件則無法使用之前定義好的函數(shù)功能。這時(shí),建立專門的python文件來保存自己定義好的函數(shù),再通過調(diào)用此文件來實(shí)現(xiàn)函數(shù)功能,這個(gè)python文件就是模塊。模塊的創(chuàng)建,就是新建一個(gè)python文件,并在文件中自定義多個(gè)函數(shù),保存好文件。1.模塊模塊文件創(chuàng)建好后,有3種導(dǎo)入與調(diào)用模塊的方式:第1種:import模塊名[as模塊別名]調(diào)用模塊:模塊名.函數(shù)名,或模塊別名.函數(shù)名第2種:from模塊名import函數(shù)名調(diào)用模塊:直接使用模塊中導(dǎo)入的函數(shù)第3種:from模塊名import*調(diào)用模塊:直接使用模塊中的所有函數(shù)2.__name__Python中為了區(qū)分代碼塊是單獨(dú)運(yùn)行,還是作為模塊導(dǎo)入到另一個(gè)代碼中進(jìn)行運(yùn)行,通過對(duì)模塊的__name__屬性值的判斷來進(jìn)行識(shí)別。
模塊作為單獨(dú)的程序運(yùn)行時(shí),__name__的屬性值是“__main__”,而作為模塊導(dǎo)入時(shí),__name__屬性的值就是該模塊的名字了。因此,在編寫模塊的py程序文件時(shí),都需要在最后增加if__name==’__main__’的判斷,在if語句塊內(nèi),通常會(huì)寫入執(zhí)行測(cè)試的代碼,或示例用法等內(nèi)容。3.包包(Packages)可以理解為一組模塊的容器,并用“包.模塊”的方式來構(gòu)建命名空間。以文件系統(tǒng)來類比的話,可以將包視為文件系統(tǒng)上的目錄,而將模塊視為目錄中的文件,包中必須包含一個(gè)名為“__init__.py”的文件,“__init__.py”文件的內(nèi)容可以是空,僅用于表示該目錄是一個(gè)包,也可以寫入一些初始化代碼。包也可以嵌套,即把子包放在某個(gè)包內(nèi)。如何能
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版2025-2026學(xué)年語文四年級(jí)第一學(xué)期期末質(zhì)量檢測(cè)練習(xí)卷(含答案)
- 湖南省岳陽市汨羅市2025-2026學(xué)年八年級(jí)上學(xué)期1月期末生物試題(無答案)
- 河南省駐馬店市泌陽縣2025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試歷史試卷答案
- 2025-2026學(xué)年一年級(jí)(上)期末游戲化測(cè)試語文試卷(附參考答案)
- 五年級(jí)題目及答案
- 文件筐測(cè)試題及答案
- 2026年小學(xué)語文模擬沖刺押題卷
- 誠實(shí)做事的演講稿
- 冀教版三年級(jí)上冊(cè)數(shù)學(xué)第二單元-兩、三位數(shù)乘一位數(shù)-測(cè)試卷及答案(奪冠系列)
- 高中高二下學(xué)期地理期末考試試題答案解析
- 2026廣東廣州市海珠區(qū)住房和建設(shè)局招聘雇員7人筆試參考題庫及答案解析
- 云南師大附中2026屆高三1月高考適應(yīng)性月考卷英語(六)含答案
- 海南2025年中國熱帶農(nóng)業(yè)科學(xué)院橡膠研究所第一批招聘16人(第1號(hào))筆試歷年參考題庫附帶答案詳解
- 2025-2026人教版數(shù)學(xué)七年級(jí)上冊(cè)期末模擬試卷(含答案)
- 2026年九江市八里湖新區(qū)國有企業(yè)面向社會(huì)公開招聘工作人員【48人】筆試參考題庫及答案解析
- 廣告行業(yè)法律法規(guī)與行業(yè)規(guī)范(標(biāo)準(zhǔn)版)
- 2025年CFA二級(jí)道德與專業(yè)標(biāo)準(zhǔn)題
- 2026年鄭州電力高等??茖W(xué)校單招職業(yè)技能測(cè)試題庫新版
- 2026年八年級(jí)物理上冊(cè)期末考試試卷及答案(共四套)
- 節(jié)能與新能源汽車技術(shù)路線圖2.0
- 保育員配合教學(xué)培訓(xùn)工作指南
評(píng)論
0/150
提交評(píng)論