Python基礎(chǔ)教程 課件 項目七 Python函數(shù)_第1頁
Python基礎(chǔ)教程 課件 項目七 Python函數(shù)_第2頁
Python基礎(chǔ)教程 課件 項目七 Python函數(shù)_第3頁
Python基礎(chǔ)教程 課件 項目七 Python函數(shù)_第4頁
Python基礎(chǔ)教程 課件 項目七 Python函數(shù)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項目七Python函數(shù)任務(wù)7.2任務(wù)7.3CONTENTS目錄函數(shù)調(diào)用函數(shù)的嵌套任務(wù)7.4任務(wù)7.5任務(wù)7.1函數(shù)的定義遞歸函數(shù)和匿名函數(shù)變量作用域任務(wù)7.1函數(shù)的定義函數(shù)是組織好的,可重復(fù)使用的,用于實(shí)現(xiàn)單一或相關(guān)功能的代碼段。它能夠提高程序的模塊化和代碼的重復(fù)利用率。7.1.1函數(shù)的概念print("*")print("***")print("*****")print("*******")這段代碼使用了多個print()函數(shù)輸出一個三角形。如果需要在一個程序的不同位置輸出同樣的三角形,那么每次都使用多個print()函數(shù)輸出的做法是不可取的。為了提高程序編寫的效率及代碼的重用性,編程人員可以把具有獨(dú)立功能的代碼塊組織成一個小模塊,即函數(shù)。自定義函數(shù)的語法格式如下:7.1.2自定義函數(shù)def函數(shù)名([參數(shù)列表]):#函數(shù)_文檔字符串函數(shù)體return表達(dá)式自定義函數(shù)具有一定的規(guī)則,如下:(1)函數(shù)代碼塊以def開頭,后面是函數(shù)名和圓括號。(2)函數(shù)名的命名規(guī)則與變量的命名規(guī)則是一樣的,即只能是字母、數(shù)字和下畫線的組合,而不能以數(shù)字開頭,并且不能與保留字重名。(3)函數(shù)的參數(shù)必須放在圓括號中。(4)文檔字符串是對函數(shù)的說明,能提高函數(shù)的可讀性。(5)函數(shù)內(nèi)容以冒號開始,并保持一定的空格縮進(jìn)。(6)return表達(dá)式用于結(jié)束函數(shù),可返回一個值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回None。任務(wù)7.2函數(shù)調(diào)用當(dāng)編程人員定義一個函數(shù)后,該函數(shù)就相當(dāng)于有了一段具有特定功能的代碼,要想執(zhí)行這些代碼,就需要調(diào)用函數(shù)。函數(shù)調(diào)用的一般形式為函數(shù)名([實(shí)際參數(shù)列表])7.2.1簡單的函數(shù)調(diào)用如果函數(shù)帶有參數(shù),則實(shí)際參數(shù)列表(簡稱實(shí)參)中應(yīng)給出要傳入函數(shù)內(nèi)部的具體值。1.return語句返回1個值【例7-3】編寫函數(shù)實(shí)現(xiàn)求兩數(shù)中的較小值。程序代碼如下:print("求兩數(shù)中的較小值\n")defmin_xy(x,y):

#自定義求兩數(shù)中的較小值函數(shù)ifx>y: #如果x>y成立,則返回y的值returnyelse: #否則返回x的值returnxa=float(input("輸入數(shù)值1:")) #接收a的值b=float(input("輸入數(shù)值2:")) #接收b的值c=min_xy(a,b) #調(diào)用函數(shù),將較小值賦給cprint("兩數(shù)中的較小值為:",c) #輸出c的值7.2.2參數(shù)傳遞2.return語句返回多個值【例7-4】編寫程序,要求輸入字符串,計算字符串中大寫字母和小寫字母的個數(shù)并輸出,計算過程用函數(shù)實(shí)現(xiàn)。程序代碼如下:print("計算字符串中大寫字母和小寫字母的個數(shù)\n")defletter_cal(s):#定義函數(shù)a=0 #變量a用于存儲大寫字母的個數(shù)b=0 #變量b用于存儲小寫字母的個數(shù)forchins:

#循環(huán)判斷字符串中的每個字母ifch.isupper(): #調(diào)用isupper()函數(shù)判斷是否為大寫字母a+=1 #如果是大寫字母,則a加1elifch.islower(): #調(diào)用islower()函數(shù)判斷是否為小寫字母b+=1 #如果是小寫字母,則b加1returna,b

#返回a和b的值7.2.2參數(shù)傳遞2.return語句返回多個值【例7-4】編寫程序,要求輸入字符串,計算字符串中大寫字母和小寫字母的個數(shù)并輸出,計算過程用函數(shù)實(shí)現(xiàn)。程序代碼如下:str=input("請輸入字符串\n") #輸入字符串c=letter_cal(str) #調(diào)用函數(shù)返回a和b的值給變量cprint(c,type(c),"\n")

#輸出變量c及變量c的類型print("大寫字母的個數(shù)為:",c[0],"\n") #輸出結(jié)果print("小寫字母的個數(shù)為:",c[1]) #輸出結(jié)果7.2.2參數(shù)傳遞1.必備參數(shù)【例7-5】當(dāng)調(diào)用下面的print_text()函數(shù)時,必須傳遞一個參數(shù),否則會出現(xiàn)語法錯誤。程序代碼如下:print("當(dāng)調(diào)用帶參數(shù)的函數(shù)時,必須傳遞一個參數(shù),否則會出現(xiàn)語法錯誤。\n")defprint_text(str):#輸出任何傳入的字符串print(str)return#調(diào)用print_text()函數(shù),傳遞一個字符串print("\n調(diào)用函數(shù),傳遞字符串參數(shù)時,輸出字符串\n")text="Hello!WelcometoPython!"print_text(text)#輸出字符串#調(diào)用print_text()函數(shù),不傳遞字符串print("\n調(diào)用函數(shù),沒有傳遞字符串參數(shù)時,會出現(xiàn)如下語法錯誤\n")print_text()7.2.3函數(shù)調(diào)用的參數(shù)類型2.默認(rèn)值參數(shù)【例7-6】默認(rèn)值參數(shù)。程序代碼如右:print("默認(rèn)值參數(shù)的應(yīng)用\n")defprint_info(name,age=35):#定義函數(shù),輸出傳入的字符串print("名字:",name)print("年齡:",age)return#調(diào)用print_info()函數(shù)print("默認(rèn)值參數(shù)為")print(print_info.__defaults__,"\n")#輸出默認(rèn)值參數(shù)print("----------------------")name_1="Zhangming"print_info(name_1,28)#顯式賦值print("----------------------")print("使用默認(rèn)值參數(shù)輸出的結(jié)果為\n")print_info(name_1) #使用默認(rèn)值參數(shù)7.2.3函數(shù)調(diào)用的參數(shù)類型定義帶有默認(rèn)值參數(shù)的函數(shù)語法格式如下:def函數(shù)名(形參名=默認(rèn)值):函數(shù)體3.關(guān)鍵字參數(shù)【例7-7】關(guān)鍵字參數(shù)。程序代碼如下:print("關(guān)鍵字參數(shù)的應(yīng)用\n")defprint_info(name,age):

#定義函數(shù),打印任何傳入的字符串

print("名字:",name)print("年齡:",age)return#調(diào)用print_info()函數(shù)print("----------------------")name_1="Zhangming"age_1=20print_info(age=age_1,name=name_1) #關(guān)鍵字參數(shù)傳遞7.2.3函數(shù)調(diào)用的參數(shù)類型4.不定長參數(shù)使用不定長參數(shù)的語法格式如下:print("不定長參數(shù)的應(yīng)用\n")deffunction_1(a,b,*args,**kwargs):#定義函數(shù)print(a)print(b)print(args)print(kwargs)print("----------------------")function_1("a","b",3,"c",5,x=6,z=7) #調(diào)用函數(shù)7.2.3函數(shù)調(diào)用的參數(shù)類型def函數(shù)名([形參列表,]*args,**kwargs):函數(shù)體【例7-8】不定長參數(shù)。程序代碼如下:任務(wù)7.3函數(shù)的嵌套在Python語言中,函數(shù)的嵌套是指在函數(shù)內(nèi)部可以再定義另外一個函數(shù)。print("函數(shù)的嵌套定義\n")defprint_line():

#定義print_line()函數(shù)print("-------------------------\n")defprint_text(): #嵌套定義print_text()函數(shù)print("Hello!WelcometoPython!\n")

print("*************************")print_text() #調(diào)用print_text()函數(shù)print_line()

#調(diào)用print_line()函數(shù)7.3.1函數(shù)的嵌套定義【例7-9】函數(shù)的嵌套定義。程序代碼如下:print("計算1!+2!+3!+...+n!的值\n")#定義fac函數(shù),求階乘deffac(k): i=2t=1whilei<=k:

t*=i

i=i+1returnt

#返回階乘結(jié)果7.3.2函數(shù)的嵌套調(diào)用【例7-10】計算1!+2!+3!+...+n!的值并輸出,使用函數(shù)的嵌套調(diào)用實(shí)現(xiàn)。計算階乘的累加,從大體上可以分為求階乘和求累加兩個功能模塊。程序代碼如下:#定義sum函數(shù),求累加defsum(m):s=0i=1whilei<=m:

s=s+fac(i)

#調(diào)用fac函數(shù)i+=1

returns #返回累加結(jié)果n=int(input("輸入階乘數(shù)為:\n"))sum_1=sum(n)print("-------------------------\n")print("1!+2!+3!+...+",n,"!=",sum_1) #調(diào)用sum函數(shù)7.3.2函數(shù)的嵌套調(diào)用【例7-10】計算1!+2!+3!+...+n!的值并輸出,使用函數(shù)的嵌套調(diào)用實(shí)現(xiàn)。計算階乘的累加,從大體上可以分為求階乘和求累加兩個功能模塊。程序代碼如下:任務(wù)7.4遞歸函數(shù)和匿名函數(shù)7.4.1遞歸函數(shù)圖7-11

遞歸函數(shù)調(diào)用遞歸函數(shù)調(diào)用如圖7-11所示。如果函數(shù)func()直接調(diào)用其本身,則稱為直接遞歸調(diào)用;如果函數(shù)func0()在執(zhí)行的過程中調(diào)用func1()函數(shù),而在func1()函數(shù)又要調(diào)用func0()函數(shù),即func0()函數(shù)間接調(diào)用了其本身,則稱為間接遞歸調(diào)用。7.4.2匿名函數(shù)定義好的匿名函數(shù)不能直接使用,需要使用一個變量將其保存,以便后期可以隨時使用該函數(shù)。關(guān)鍵字lambda常用于定義簡單的、能夠在一行內(nèi)表示的函數(shù),并返回一個函數(shù)類型。示例代碼如下:在Python語言中,匿名函數(shù)是一種特殊的函數(shù),是指沒有名稱的函數(shù),即不再使用def定義的函數(shù)。匿名函數(shù)是用關(guān)鍵字lambda來定義的。關(guān)鍵字lambda的語法格式如下:變量名=lambda[參數(shù)列表]:表達(dá)式>>>multiply=lambdanum_1,num_2:num_1*num_2#定義匿名函數(shù)>>>print("兩數(shù)的乘積為:",multiply(5,15))#調(diào)用multiply變量兩數(shù)的乘積為:75任務(wù)7.5變量作用域7.5.1變量作用域的規(guī)則Python變量的作用域有L(local)、E(enclosing)、G(global)和B(built-in)4種:L(local)是指函數(shù)內(nèi)的作用域,包括局部變量和參數(shù);E(enclosing)是指外層嵌套函數(shù)作用域,如閉包函數(shù)的外層函數(shù);G(global)是指全局作用域;B(built-in)是指內(nèi)建作用域;Python語言中的變量采用“L→E→G→B”的規(guī)則查找,即在Python檢索變量時,優(yōu)先在函數(shù)作用域中查找;如果未找到,則在外層嵌套函數(shù)作用域中查找,如果在其中仍未找到,則在全局作用域中查找;最后再在內(nèi)建作用域中查找。7.5.2全局變量和局部變量【例7-13】全局變量和局部變量。程序代碼如下:print("全局變量和局部變量的應(yīng)用\n")result=100

#全局變量defsum(a,b):result=a+b #局部變量print(′函數(shù)內(nèi)的變量result是局部變量,其值為:′,result)returnresult#調(diào)用sum()函數(shù)sum(50,75)print(′函數(shù)外的變量result

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論