版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
筐魚梧領(lǐng)鳳峽匪跑腳凡輔乒蹤勿久褂舟嬰襲剪肚爹倫甄嘯鐐娟附卉態(tài)再罵廣東農(nóng)工商職業(yè)技術(shù)學(xué)院PPT模板-精美原創(chuàng)畢業(yè)論文答辯廣東農(nóng)工商職業(yè)技術(shù)學(xué)院PPT模板-精美原創(chuàng)畢業(yè)論文答辯項目5函數(shù)的高級應(yīng)用目錄|CONTENT1項目介紹2項目目標(biāo)3項目準(zhǔn)備4項目實施項目介紹項目背景本項目提供了Python函數(shù)相關(guān)的一些高級概念和使用方法,能夠幫助大家完成更復(fù)雜的任務(wù)。項目介紹項目規(guī)劃01熟悉變量作用域、函數(shù)嵌套定義、lambda函數(shù)、閉包、裝飾器等概念和設(shè)計方法02熟悉遞歸等程序設(shè)計方法03能綜合運用Python相關(guān)知識點解決典型程序設(shè)計問題目錄|CONTENT1項目介紹2項目目標(biāo)3項目準(zhǔn)備4項目實施項目目標(biāo)知識目標(biāo)1掌握Python函數(shù)相關(guān)的高級概念2熟悉遞歸的設(shè)計思想3熟悉經(jīng)典問題的編程方法項目目標(biāo)能力目標(biāo)1了解Python函數(shù)相關(guān)高級方法的使用2了解使用遞歸解決問題的方法3掌握常用程序設(shè)計思想目錄|CONTENT1項目介紹2項目目標(biāo)3項目準(zhǔn)備4項目實施項目準(zhǔn)備1.變量的作用域變量的作用域是指一個變量能夠作用的范圍,也就是在多大范圍內(nèi)能夠被解釋器識別。根據(jù)變量的作用域,變量可分為全局變量和局部變量。聲明在函數(shù)外部的變量,被稱為全局變量,作用范圍是所在程序文件內(nèi)從定義開始至程序結(jié)束,包括變量定義后所調(diào)用的函數(shù)內(nèi)部。項目準(zhǔn)備2.函數(shù)的嵌套定義和nonlocal關(guān)鍵字Python函數(shù)的定義可以嵌套。并可以通過nonlocal關(guān)鍵字,可以使內(nèi)層的函數(shù)值接使用外層函數(shù)中定義的變量。defouter():x=10#x為外部函數(shù)的局部變量definner():#定義內(nèi)部函數(shù)x=20#x為內(nèi)部函數(shù)局部變量 print('inner函數(shù)中的x值為:',x)inner()#調(diào)用inner函數(shù)print('outer函數(shù)中的x值為:',x)outer()#調(diào)用outer函數(shù)defouter():x=10#x為外部函數(shù)的局部變量definner():#定義內(nèi)部函數(shù)nonlocalx#nonlocal聲明 x=20#將x賦為20 print('inner函數(shù)中的x值為:',x) inner()#調(diào)用inner函數(shù) print('outer函數(shù)中的x值為:',x)outer()#調(diào)用outer函數(shù)項目準(zhǔn)備3.lambda函數(shù)lambda函數(shù)是一個匿名函數(shù),有時也被稱為lambda表達(dá)式,比def格式的函數(shù)定義簡單很多。lambda函數(shù)可以接收任意多個參數(shù),但只返回一個表達(dá)式的值。lambda中不能包含多個表達(dá)式。lambda定義形式如下:lambda[參數(shù)1[,參數(shù)2,...,參數(shù)n]]:表達(dá)式項目準(zhǔn)備4.閉包如果內(nèi)層函數(shù)使用了外層函數(shù)中定義的局部變量,并且外層函數(shù)的返回值是內(nèi)層函數(shù)的引用,就構(gòu)成了閉包。定義在外層函數(shù)中但由內(nèi)層函數(shù)使用的變量被稱為自由變量。defouter(x):#定義函數(shù)outery=10#定義局部變量y并賦為10
definner(z):#在outer函數(shù)中定義嵌套函數(shù)innernonlocalx,y#nonlocal聲明
returnx+y+z#返回x+y+z的結(jié)果
returninner#返回嵌套函數(shù)inner的引用f=outer(5)#將返回的inner函數(shù)賦給fprint('f(20)的值為:',f(20))#print()函數(shù)輸出的值為35項目準(zhǔn)備5.裝飾器裝飾器實際上就是閉包。利用裝飾器,可以在不修改已有函數(shù)的情況下向已有函數(shù)中注入代碼,使其具備新的功能。在裝飾器外層函數(shù)的形參列表中只有一個形參func,接收要裝飾的函數(shù),在內(nèi)層函數(shù)中直接調(diào)用func即表示執(zhí)行所裝飾的函數(shù)中的代碼。將裝飾器內(nèi)層函數(shù)的形參列表寫為“*args,**kwargs”,表示要裝飾的函數(shù)可以具有任意形式的形參列表;對應(yīng)地,調(diào)用要裝飾的函數(shù)時也要將實參列表寫為“*args,**kwargs”。在要裝飾的函數(shù)前面寫上“@裝飾器名”,即可將裝飾器中的代碼注入到該函數(shù)中。項目準(zhǔn)備6.遞歸函數(shù)內(nèi)部可以調(diào)用其他函數(shù)。如果一個函數(shù)在內(nèi)部直接或間接地調(diào)用自己本身,這是一種遞歸的方法。遞歸是一種非常實用的程序設(shè)計技術(shù)。許多問題具有遞歸的特性,在某些情況下,用其他方法很難解決的問題,利用遞歸可以輕松解決。目錄|CONTENT1項目介紹2項目目標(biāo)3項目準(zhǔn)備4項目實施項目實施任務(wù)5.1將輸入升序輸出在Python中,如果想實現(xiàn)可重復(fù)使用,并且目的特定的功能,可以通過函數(shù)來實現(xiàn)。函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。Python中既包括內(nèi)置函數(shù),也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。項目實施任務(wù)5.1將輸入升序輸出建立“將輸入升序輸出.py”文件,用于編寫Python實驗程序編寫任務(wù)代碼。#定義一個函數(shù),其內(nèi)部實現(xiàn)為通過sorted函數(shù)對輸入?yún)?shù)進(jìn)行升序排序,并打印defsortAndPrint(x,y,z):print(sorted((x,y,z)))
#編寫程序的主入口,調(diào)用sortAndPrint函數(shù)實現(xiàn)排序及打印功能if__name__=='__main__':sortAndPrint(5,10,3)項目實施任務(wù)5.1將輸入升序輸出執(zhí)行程序①鼠標(biāo)右鍵單擊右側(cè)編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執(zhí)行編寫好的Python程序,本次實驗文件名為“將輸入升序輸出”
②在IDE下方控制臺查看輸出結(jié)果項目實施任務(wù)5.2斐波那契數(shù)列斐波那契數(shù)列(Fibonaccisequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(LeonardoFibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現(xiàn)代物理、準(zhǔn)晶體結(jié)構(gòu)、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用。項目實施任務(wù)5.2斐波那契數(shù)列建立“斐波那契數(shù)列.py”文件,用于編寫Python實驗程序編寫任務(wù)代碼。#定義一個函數(shù),該函數(shù)接收一個參數(shù)n,用于計算斐波那契數(shù)列項。當(dāng)n小于等于0時,返回的數(shù)列項值為0defFibonacci_Recursion_tool(n):ifn<=0:return0elifn==1:#實現(xiàn)當(dāng)n等于1時,返回的數(shù)列項值為1return1else:#實現(xiàn)當(dāng)n非0非1時,返回的數(shù)列項值為f(n-1)+f(n-2)returnFibonacci_Recursion_tool(n-1)+Fibonacci_Recursion_tool(n-2)
#定義一個函數(shù),該函數(shù)接收一個參數(shù)n,用于計算1-n之間的斐波那契數(shù)列。該函數(shù)的實現(xiàn)為,遍歷1-n之間的數(shù),并依次調(diào)用Fibonacci_Recursion_tool函數(shù)計算數(shù)列項,并將計算的結(jié)果保存至一個列表中defFibonacci_Recursion(n):result_list=[]foriinrange(1,n+1):result_list.append(Fibonacci_Recursion_tool(i))returnresult_list
#編寫程序入口,調(diào)用Fibonacci_Recursion函數(shù),并傳入100作為實參,計算10個斐波那契數(shù)列項,并打印if__name__=='__main__':result=Fibonacci_Recursion(10)print(result)項目實施任務(wù)5.2斐波那契數(shù)列執(zhí)行程序①鼠標(biāo)右鍵單擊右側(cè)編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執(zhí)行編寫好的Python程序,本次實驗文件名為“將輸入升序輸出”②在IDE下方控制臺查看輸出結(jié)果項目實施任務(wù)5.3階乘之和評價與考核一個正整數(shù)的階乘(factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。自然數(shù)n的階乘寫作n!。1808年,基斯頓·卡曼引進(jìn)這個表示法。亦即n!=1×2×3×...×(n-1)×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。本任務(wù)求解1到20的正整數(shù)的各自階乘并求和。項目實施任務(wù)5.3階乘之和評價與考核建立“階乘之和.py”文件,用于編寫Python實驗程序編寫任務(wù)代碼。#引入reduce函數(shù)用于之后的聚合計算fromfunctoolsimportreduce#定義函數(shù)factorialA,該函數(shù)接收一個參數(shù)n,內(nèi)部通過遞歸的方式計算n的階乘并返回deffactorialA(n):ifn==1:return1else:returnn*factorialA(n-1)#定義函數(shù)factorialB,該函數(shù)接收一個參數(shù)n,內(nèi)部通過lambda表達(dá)式以及聚合函數(shù)計算n的階乘并返回deffactorialB(n):returnreduce(lambdax,y:x*y,range(1,n+1))#編寫程序主入口,計算1-20的階乘之和,并打印if__name__=='__main__':sum=0;foriinrange(1,21):sum+=factorialA(i)print(sum)項目實施任務(wù)5.3階乘之和評價與考核執(zhí)行程序①鼠標(biāo)右鍵單擊右側(cè)編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執(zhí)行編寫好的Python程序,本次實驗文件名為“階乘之和”②在IDE下方控制臺查看輸出結(jié)果項目實施任務(wù)5.4計算圓的面積圓的面積公式我們都比較熟悉:,其中,π為圓周率,是一個常數(shù);r為圓的半徑。在實際的程序中,除了要通過程序正確表達(dá)計算公式,還要對公式中各輸入中的正確性進(jìn)行判斷,例如:r是圓的半徑,應(yīng)該是一個整數(shù)或者浮點數(shù),如果用戶輸入了一個字符串,則是非法字符,無法進(jìn)行計算,需要用戶重新輸入。項目實施任務(wù)5.4計算圓的面積建立“計算圓的面積.py”文件,用于編寫Python實驗程序編寫任務(wù)代碼。importmath#引入math包,用于獲取pi的值
#定義一個函數(shù)用于校驗被修飾函數(shù)的參數(shù)類型,其接收一個func參數(shù),即為被修飾的函數(shù)defvalidate(func):defvalidate(*arg,**kw):iftype(eval(str(arg[0])))==intortype(eval(str(arg[0])))==float:arg=(float(arg[0]),)returnfunc(*arg,**kw)else:print('請傳入一個數(shù)字')returnvalidate#定義被修飾的函數(shù),該函數(shù)接收一個參數(shù)r,表示圓的半徑,其功能為計算圓的面積。在函數(shù)名上方添加@validate使用修飾器校驗參數(shù)類型@validatedefarea(r):returnr*r*math.piif__name__=='__main__':print(area(5.4))項目實施任務(wù)5.4計算圓的面積執(zhí)行程序①鼠標(biāo)右鍵單擊右側(cè)編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執(zhí)行編寫好的Python程序,本次實驗文件名為“計算圓的面積”②在IDE下方控制臺查看輸出結(jié)果課后練習(xí)與技能訓(xùn)練一、填空題練習(xí)按照作用域的不同,Python中的變量可以分為局部變量和
。在一個函數(shù)中使用關(guān)鍵字,可以聲明在該函數(shù)中使用的是全局變量、而非局部變量。通過
關(guān)鍵字,可以使內(nèi)層的函數(shù)直接使用外層函數(shù)中定義的變量。
函數(shù)是指在一個函數(shù)內(nèi)部通過調(diào)用自己來完成一個問題的求解。
函數(shù)也稱為匿名函數(shù),是一種不使用def定義函數(shù)的形式,其作用是能快速定義一個簡短的函數(shù)。lambda函數(shù)的函數(shù)體只是一個
,所以lambda函數(shù)通常只能實現(xiàn)比較簡單的功能。如果內(nèi)層函數(shù)使用了外層函數(shù)中定義的局部變量,并且外層函數(shù)的返回值是內(nèi)層函數(shù)的引用,就構(gòu)成了
。課后練習(xí)與技能訓(xùn)練二、選擇題練習(xí)1.下列說法中錯誤的是()在一個函數(shù)中定義的變量就是局部變量局部變量的作用域是從定義位置到函數(shù)結(jié)束位置在所有函數(shù)外定義的變量就是全局變量全局變量的作用域是從定義位置到程序結(jié)束位置課后練習(xí)與技能訓(xùn)練二、選擇題練習(xí)2.下列關(guān)于裝飾器的說法錯誤的是()A.利用裝飾器,可以在不修改已有函數(shù)的情況下向已有函數(shù)中注入代碼,使其具備新的功能B.一個裝飾器可以為多個函數(shù)注入代碼,一個函數(shù)也可以注入多個裝飾器的代碼C.一個裝飾器可以為多個函數(shù)注入代碼,而一個函數(shù)只能注入一個裝飾器的代碼D.裝飾器實際上就是一種閉包課后練習(xí)與技能訓(xùn)練三、簡答題練習(xí)1.寫出下面程序的輸出結(jié)果。defouter():x=100globalyy=200definner():nonlocalxx=1000y=2000print('inner函數(shù)中的x,y值為:',x,y)inner()print('outer函數(shù)中的x,y值為:',x,y)x=10y=20outer()print("執(zhí)行outer,inner函數(shù)之后x,y值為:",x,y)課后練習(xí)與技能訓(xùn)練三、簡答題練習(xí)2.寫出下面閉包程序的輸出結(jié)果。deff(x):y=100definner(z):
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保技術(shù)改造項目合同3篇
- 2025版煤炭物流倉儲一體化服務(wù)合同模板4篇
- 2024珠寶銷售合同
- 2025年度高新技術(shù)企業(yè)研發(fā)費用加計扣除代理合同3篇
- 2025年度銷售合同信息共享與部門協(xié)同辦公2篇
- 2025年度XX農(nóng)業(yè)廢棄物資源化利用與污水處理合同3篇
- 2024水電站電力輸出及銷售合同協(xié)議
- 2025年度環(huán)保型廠房出租與能源管理一體化服務(wù)合同3篇
- 二零二五年齡上限勞動合同規(guī)范樣本2篇
- 二零二五年度風(fēng)景名勝區(qū)草坪修剪與修復(fù)合同3篇
- MT/T 199-1996煤礦用液壓鉆車通用技術(shù)條件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力學(xué)性能試驗第1部分:桌類強度和耐久性
- 第三方在線糾紛解決機制(ODR)述評,國際商法論文
- 第5章-群體-團隊溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 深基坑-安全教育課件
- 園林施工管理大型園林集團南部區(qū)域養(yǎng)護標(biāo)準(zhǔn)圖例
- 排水許可申請表
- 低血糖的觀察和護理課件
- 計量檢定校準(zhǔn)技術(shù)服務(wù)合同協(xié)議書
評論
0/150
提交評論