




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
筐魚梧領鳳峽匪跑腳凡輔乒蹤勿久褂舟嬰襲剪肚爹倫甄嘯鐐娟附卉態再罵廣東農工商職業技術學院PPT模板-精美原創畢業論文答辯廣東農工商職業技術學院PPT模板-精美原創畢業論文答辯項目5函數的高級應用目錄|CONTENT1項目介紹2項目目標3項目準備4項目實施項目介紹項目背景本項目提供了Python函數相關的一些高級概念和使用方法,能夠幫助大家完成更復雜的任務。項目介紹項目規劃01熟悉變量作用域、函數嵌套定義、lambda函數、閉包、裝飾器等概念和設計方法02熟悉遞歸等程序設計方法03能綜合運用Python相關知識點解決典型程序設計問題目錄|CONTENT1項目介紹2項目目標3項目準備4項目實施項目目標知識目標1掌握Python函數相關的高級概念2熟悉遞歸的設計思想3熟悉經典問題的編程方法項目目標能力目標1了解Python函數相關高級方法的使用2了解使用遞歸解決問題的方法3掌握常用程序設計思想目錄|CONTENT1項目介紹2項目目標3項目準備4項目實施項目準備1.變量的作用域變量的作用域是指一個變量能夠作用的范圍,也就是在多大范圍內能夠被解釋器識別。根據變量的作用域,變量可分為全局變量和局部變量。聲明在函數外部的變量,被稱為全局變量,作用范圍是所在程序文件內從定義開始至程序結束,包括變量定義后所調用的函數內部。項目準備2.函數的嵌套定義和nonlocal關鍵字Python函數的定義可以嵌套。并可以通過nonlocal關鍵字,可以使內層的函數值接使用外層函數中定義的變量。defouter():x=10#x為外部函數的局部變量definner():#定義內部函數x=20#x為內部函數局部變量 print('inner函數中的x值為:',x)inner()#調用inner函數print('outer函數中的x值為:',x)outer()#調用outer函數defouter():x=10#x為外部函數的局部變量definner():#定義內部函數nonlocalx#nonlocal聲明 x=20#將x賦為20 print('inner函數中的x值為:',x) inner()#調用inner函數 print('outer函數中的x值為:',x)outer()#調用outer函數項目準備3.lambda函數lambda函數是一個匿名函數,有時也被稱為lambda表達式,比def格式的函數定義簡單很多。lambda函數可以接收任意多個參數,但只返回一個表達式的值。lambda中不能包含多個表達式。lambda定義形式如下:lambda[參數1[,參數2,...,參數n]]:表達式項目準備4.閉包如果內層函數使用了外層函數中定義的局部變量,并且外層函數的返回值是內層函數的引用,就構成了閉包。定義在外層函數中但由內層函數使用的變量被稱為自由變量。defouter(x):#定義函數outery=10#定義局部變量y并賦為10
definner(z):#在outer函數中定義嵌套函數innernonlocalx,y#nonlocal聲明
returnx+y+z#返回x+y+z的結果
returninner#返回嵌套函數inner的引用f=outer(5)#將返回的inner函數賦給fprint('f(20)的值為:',f(20))#print()函數輸出的值為35項目準備5.裝飾器裝飾器實際上就是閉包。利用裝飾器,可以在不修改已有函數的情況下向已有函數中注入代碼,使其具備新的功能。在裝飾器外層函數的形參列表中只有一個形參func,接收要裝飾的函數,在內層函數中直接調用func即表示執行所裝飾的函數中的代碼。將裝飾器內層函數的形參列表寫為“*args,**kwargs”,表示要裝飾的函數可以具有任意形式的形參列表;對應地,調用要裝飾的函數時也要將實參列表寫為“*args,**kwargs”。在要裝飾的函數前面寫上“@裝飾器名”,即可將裝飾器中的代碼注入到該函數中。項目準備6.遞歸函數內部可以調用其他函數。如果一個函數在內部直接或間接地調用自己本身,這是一種遞歸的方法。遞歸是一種非常實用的程序設計技術。許多問題具有遞歸的特性,在某些情況下,用其他方法很難解決的問題,利用遞歸可以輕松解決。目錄|CONTENT1項目介紹2項目目標3項目準備4項目實施項目實施任務5.1將輸入升序輸出在Python中,如果想實現可重復使用,并且目的特定的功能,可以通過函數來實現。函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。函數能提高應用的模塊性,和代碼的重復利用率。Python中既包括內置函數,也可以自己創建函數,這被叫做用戶自定義函數。項目實施任務5.1將輸入升序輸出建立“將輸入升序輸出.py”文件,用于編寫Python實驗程序編寫任務代碼。#定義一個函數,其內部實現為通過sorted函數對輸入參數進行升序排序,并打印defsortAndPrint(x,y,z):print(sorted((x,y,z)))
#編寫程序的主入口,調用sortAndPrint函數實現排序及打印功能if__name__=='__main__':sortAndPrint(5,10,3)項目實施任務5.1將輸入升序輸出執行程序①鼠標右鍵單擊右側編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執行編寫好的Python程序,本次實驗文件名為“將輸入升序輸出”
②在IDE下方控制臺查看輸出結果項目實施任務5.2斐波那契數列斐波那契數列(Fibonaccisequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(LeonardoFibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用。項目實施任務5.2斐波那契數列建立“斐波那契數列.py”文件,用于編寫Python實驗程序編寫任務代碼。#定義一個函數,該函數接收一個參數n,用于計算斐波那契數列項。當n小于等于0時,返回的數列項值為0defFibonacci_Recursion_tool(n):ifn<=0:return0elifn==1:#實現當n等于1時,返回的數列項值為1return1else:#實現當n非0非1時,返回的數列項值為f(n-1)+f(n-2)returnFibonacci_Recursion_tool(n-1)+Fibonacci_Recursion_tool(n-2)
#定義一個函數,該函數接收一個參數n,用于計算1-n之間的斐波那契數列。該函數的實現為,遍歷1-n之間的數,并依次調用Fibonacci_Recursion_tool函數計算數列項,并將計算的結果保存至一個列表中defFibonacci_Recursion(n):result_list=[]foriinrange(1,n+1):result_list.append(Fibonacci_Recursion_tool(i))returnresult_list
#編寫程序入口,調用Fibonacci_Recursion函數,并傳入100作為實參,計算10個斐波那契數列項,并打印if__name__=='__main__':result=Fibonacci_Recursion(10)print(result)項目實施任務5.2斐波那契數列執行程序①鼠標右鍵單擊右側編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執行編寫好的Python程序,本次實驗文件名為“將輸入升序輸出”②在IDE下方控制臺查看輸出結果項目實施任務5.3階乘之和評價與考核一個正整數的階乘(factorial)是所有小于及等于該數的正整數的積,并且0的階乘為1。自然數n的階乘寫作n!。1808年,基斯頓·卡曼引進這個表示法。亦即n!=1×2×3×...×(n-1)×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。本任務求解1到20的正整數的各自階乘并求和。項目實施任務5.3階乘之和評價與考核建立“階乘之和.py”文件,用于編寫Python實驗程序編寫任務代碼。#引入reduce函數用于之后的聚合計算fromfunctoolsimportreduce#定義函數factorialA,該函數接收一個參數n,內部通過遞歸的方式計算n的階乘并返回deffactorialA(n):ifn==1:return1else:returnn*factorialA(n-1)#定義函數factorialB,該函數接收一個參數n,內部通過lambda表達式以及聚合函數計算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)項目實施任務5.3階乘之和評價與考核執行程序①鼠標右鍵單擊右側編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執行編寫好的Python程序,本次實驗文件名為“階乘之和”②在IDE下方控制臺查看輸出結果項目實施任務5.4計算圓的面積圓的面積公式我們都比較熟悉:,其中,π為圓周率,是一個常數;r為圓的半徑。在實際的程序中,除了要通過程序正確表達計算公式,還要對公式中各輸入中的正確性進行判斷,例如:r是圓的半徑,應該是一個整數或者浮點數,如果用戶輸入了一個字符串,則是非法字符,無法進行計算,需要用戶重新輸入。項目實施任務5.4計算圓的面積建立“計算圓的面積.py”文件,用于編寫Python實驗程序編寫任務代碼。importmath#引入math包,用于獲取pi的值
#定義一個函數用于校驗被修飾函數的參數類型,其接收一個func參數,即為被修飾的函數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('請傳入一個數字')returnvalidate#定義被修飾的函數,該函數接收一個參數r,表示圓的半徑,其功能為計算圓的面積。在函數名上方添加@validate使用修飾器校驗參數類型@validatedefarea(r):returnr*r*math.piif__name__=='__main__':print(area(5.4))項目實施任務5.4計算圓的面積執行程序①鼠標右鍵單擊右側編輯窗口,在菜單中選擇“Run‘python主程序所在文件名’”一項執行編寫好的Python程序,本次實驗文件名為“計算圓的面積”②在IDE下方控制臺查看輸出結果課后練習與技能訓練一、填空題練習按照作用域的不同,Python中的變量可以分為局部變量和
。在一個函數中使用關鍵字,可以聲明在該函數中使用的是全局變量、而非局部變量。通過
關鍵字,可以使內層的函數直接使用外層函數中定義的變量。
函數是指在一個函數內部通過調用自己來完成一個問題的求解。
函數也稱為匿名函數,是一種不使用def定義函數的形式,其作用是能快速定義一個簡短的函數。lambda函數的函數體只是一個
,所以lambda函數通常只能實現比較簡單的功能。如果內層函數使用了外層函數中定義的局部變量,并且外層函數的返回值是內層函數的引用,就構成了
。課后練習與技能訓練二、選擇題練習1.下列說法中錯誤的是()在一個函數中定義的變量就是局部變量局部變量的作用域是從定義位置到函數結束位置在所有函數外定義的變量就是全局變量全局變量的作用域是從定義位置到程序結束位置課后練習與技能訓練二、選擇題練習2.下列關于裝飾器的說法錯誤的是()A.利用裝飾器,可以在不修改已有函數的情況下向已有函數中注入代碼,使其具備新的功能B.一個裝飾器可以為多個函數注入代碼,一個函數也可以注入多個裝飾器的代碼C.一個裝飾器可以為多個函數注入代碼,而一個函數只能注入一個裝飾器的代碼D.裝飾器實際上就是一種閉包課后練習與技能訓練三、簡答題練習1.寫出下面程序的輸出結果。defouter():x=100globalyy=200definner():nonlocalxx=1000y=2000print('inner函數中的x,y值為:',x,y)inner()print('outer函數中的x,y值為:',x,y)x=10y=20outer()print("執行outer,inner函數之后x,y值為:",x,y)課后練習與技能訓練三、簡答題練習2.寫出下面閉包程序的輸出結果。deff(x):y=100definner(z):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅領創業協議書
- 給老公寫協議書
- 政府和協議合作協議書
- 混凝土施工安全協議書
- 紀企共建協議書
- 調解中心協議書
- 董事服務協議書
- 租賃工具協議書
- 策劃咨詢協議書
- 避讓搬遷協議書
- 金屬非金屬礦山安全作業實際操作考評標準
- 【MOOC】保險學概論-中央財經大學 中國大學慕課MOOC答案
- GIS安裝標準化作業指導書
- C919飛機首飛試飛機組培訓-指示記錄
- 社保費扣費協議書范文范本下載
- 【一等獎課件】《刑事攝像技術》比賽課題:現場照相內容及方法
- 卷紙有多長(教學設計)-2023-2024學年六年級下冊數學北師大版
- VDA6.3 2023 過程審核檢查表-參考表單
- 數據庫原理英文選擇題
- 水電站水庫蓄水安全鑒定工程施工自檢報告
- 2024年出納招聘筆試試題及答案
評論
0/150
提交評論