Python語言程序設計(第二版) 課件 5 Python函數與模塊_第1頁
Python語言程序設計(第二版) 課件 5 Python函數與模塊_第2頁
Python語言程序設計(第二版) 課件 5 Python函數與模塊_第3頁
Python語言程序設計(第二版) 課件 5 Python函數與模塊_第4頁
Python語言程序設計(第二版) 課件 5 Python函數與模塊_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python函數與模塊代碼復用函數與模塊前面我們曾經使用過函數和模塊:模塊:math、random……函數:int、float、str、eval、print、input、pow、round……函數:一些經常重復使用的程序代碼定義為函數,方便重復調用執行,以提高程序的模塊化和代碼的重復利用率。函數對大型程序的開發是很有用的。分為系統函數和用戶自定義函數。提高代碼重用率。模塊(module):是Python最高級別的程序組織單元,比函數顆粒度更大,一個模塊可以包含若干個函數。分系統模塊和用戶自定義模塊,用戶自定義的一個模塊就是一個.py程序文件。自定義函數Python的函數由函數名、參數和函數體組成。格式如下:def<函數名>([形式參數列表]): <執行語句> #函數體 [return<返回值>]例如:defmyfunc(x,y): returnx+y

或print(x+y)注意:關鍵字def;函數的命名原則與變量命名相同;使用縮進表示與函數體的隸屬關系;不需要聲明其返回類型,也不需要聲明參數的傳入類型。函數的調用調用:程序中直接寫函數名和相應參數即可。例如:defmyfunc(x,y): #函數定義,x,y是形參

returnx+ya,b=2.5,3.6c=myfunc(a,b)#函數調用,a和b為實參print(a,b,c)函數的參數形參:函數定義時,用來接收調用該函數時傳入的參數稱為形式參數(parameter),簡稱形參。實參:調用函數時,實際傳遞給函數的參數稱為實際參數(argument),簡稱實參。函數調用時發生參數傳遞,提供的實際參數應與被調用函數的形式參數按順序一一對應,而且參數類型要兼容。舉例1、編制求圓的面積的函數2、編制求n!的函數函數定義函數調用參數傳遞方式按值傳遞——單項傳遞defchange(number,string,lst):number=5string='GoodBye'lst=[4,5,6]print("Inside:",number,string,lst)num=10string='hello'lst=[1,2,3]print('Before:',num,string,lst)change(num,string,lst)#調用print('After:',num,string,lst)程序運行結果如下:Before:10hello[1,2,3]Inside:5GoodBye[4,5,6]After:10hello[1,2,3]參數傳遞方式(2)傳遞列表、字典等可變對象(按地址傳遞)——可修改可改變對象的值defchange(lst):lst[0]=10print("Insidelst={}".format(lst))lst=[1,2,3,4,5]print("Beforelst={}".format(lst))change(lst)print("Afterlst={}".format(lst))程序運行結果如下:Beforelst=[1,2,3,4,5]Insidelst=[10,2,3,4,5]Afterlst=[10,2,3,4,5]參數傳遞方式如交換兩個數的問題,可以采用以下程序:defswap(lst):lst[0],lst[1]=lst[1],lst[0]lst1=list(eval(input("輸入要交換的數字:")))swap(lst1)print(lst1)程序運行結果如下:10,20[20,10]從語句執行結果可知,swap()函數實現了數據的交換。(3)傳遞不可變對象元組(按地址傳遞)參數的類型1.關鍵字參數實參的數目應與形參完全匹配。例如,調用函數mysum(),一定要傳遞兩個參數,否則會出現一個語法錯誤。defmysum(x,y): returnx+ymysum(5,4)參數的類型2.默認值參數定義時可指定默認值,“形參變量名=參數值”,當實參沒有值時就用默認值。defdisplay(a=“hello”,b=“world”):print(a+b)#主程序display()#都取默認值輸出:helloworlddisplay(b=“!!!”)#a取默認值輸出:hello!!!display(a=“你好”)#b取默認值輸出:你好worlddisplay(“!!!”)#未指定參數名,從左到右傳遞匹

配輸出:!!!world參數的類型3.任意個數參數,(元組類型變長參數傳遞)參數名稱前面加一個星號“*”,則表示參數是一個元組類型可變長參數。需要放在必須復制的參數之后。例如:d是固定參數*dtup表示一個元組例5.3帶元組類型變長參數的函數調用示例defprintse_series(d,*dtup):print('必須參數:',d)iflen(dtup)!=0:print('元組參數:',end='')foriindtup:print(i,end='')printse_series(10)printse_series(10,20,30,40)運行結果為:必須參數:10必須參數:10元組參數:203040注意:所有其他類型的形式參數,必須在可變參數之前出現。函數中變量的作用域指在程序中能夠對該變量進行讀/寫操作的范圍。變量分為:函數中定義的變量(Local,簡稱L)嵌套中父級函數的局部作用域變量(Enclosing,簡稱E)模塊級別定義的全局變量(Global,簡稱G)內置模塊中的變量(Built-in,簡稱B)優先級由高到低:LEGB。同名變量出現在不同的函數體中,不相互干擾,能相互訪問;相同命名標識的變量在同一個函數體中或具有函數嵌套關系時,按優先級進行訪問。函數中變量的作用域——LEGB例5.6變量作用域測試x=0 #global模塊中定義的全局變量defouter():

x=1 #enclosing局部變量definner():

x=2 #local,函數中定義的print('local:x=',x) #x=2inner()print('enclosing:x=',x) #x=1outer()print('global:x=',x) #x=0模塊1.標準庫模塊標準庫模塊是Python自帶的函數模塊,也稱為標準鏈接庫。Python提供了大量的標準庫模塊,實現了很多常見功能,包括數學運算、字符串處理、操作系統功能、網絡和Internet編程、圖形繪制、圖形用戶界面創建,等等,這些為應用程序開發提供了強大支持。標準庫模塊并不是Python語言的組成部分,而是由專業開發人員預先設計好并隨語言提供給用戶使用的。用戶可以在安裝了標準Python系統的情況下,通過導入命令來使用所需要的模塊。用戶自定義模塊2.用戶自定義模塊用戶自定義一個模塊就是建立一個Python程序文件,其中包括變量、函數的定義。下面是一個簡單的模塊,程序文件名為support.py。defprint_func(par): print("Hello:",par)一個Python程序可通過導入一個模塊而讀取這個模塊的內容。import模塊名1[,模塊名2[……,模塊名n]]例如:importsupport#導入模塊support.print_func(“Brenden”)#調用模塊函數自定義模塊應用例5.11創建一個fibo.py模塊,其中包含兩個求Fibonacci數列的函數,然后導入該模塊并調用其中的函數。創建一個fibo.py模塊。deffib1(n):a,b=0,1whileb<n:print(b,end='')a,b=b,a+bprint()deffib2(n):a1,b1=0,1result=[]whileb1<n:result.append(b1)a1,b1=b1,a1+b1returnresult模塊中函數使用importfibo.pyfibo.fib1(1000)結果:1123581321345589144233377610987fibo.fib2(100)結果:[1,1,2,3,5,8,13,21,34,55,89]Python程序結構Python程序:一個或多個程序文件,每個程序文件就是一個.py源程序文件。一個主程序+多個模塊組成。(模塊也是程序)主程序定義了程序的主控流程,是執行程序時的啟動文件,屬于頂層文件。模塊則是函數庫,相當于子程序。模塊是用戶自定義函數的集合體,主程序可以調用模塊中定義的函數來完成應用程序的功能,還可以調用標準庫模塊,同時模塊也可以調用其他模塊或標準庫模塊定義的函數。Python程序結構示例假設一個由三個程序文件a.py、b.py和c.py組成的Python程序結構,其中a.py是主程序,b.py和c.py是模塊。a調用b、c,c調用b。程序從a開始執行。importmathdefhello(person): print("Hello",person)defbye(person): print("Bye",person)defdisp(r): print(math.pi*r*r)importb,cb.hello("Jack")b.bye("Jack")c.show(10)importbdefshow(n):b.disp(n)模塊b模塊c主程序a函數&模塊應用舉例分析:定義一個函數求累加項,循環控制累加100次。程序如下:defmy_fun(n,m):t=0foriinrange(1,n+1):t+=i**mreturnts=my_fun(100,1)+my_fun(50,2)+my_fun(10,-1)print(s)

例5.14設計一個程序,求同時滿足下列兩個條件的分數x的個數:(1)1/6<x<1/5(2)x的分子、分母都是素數且分母是2位數。分析:設x=m/n,根據條件(2),有10≤n≤99;根據條件(1),有5m≤n≤6m,并且n、m均為素數。用窮舉法來求解這個問題,并設計一個函數來判斷一個數是否為素數,若是素數則返回值True,否則為False。函數&模塊應用舉例frommathimport*defisprime(n):forjinrange(2,int(sqrt(n)+1)):ifn%j==0:returnFalsebreakreturnTruedefmain():count=0forninrange(11,100):ifisprime(n):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論