函數(shù)公開課課件_第1頁
函數(shù)公開課課件_第2頁
函數(shù)公開課課件_第3頁
函數(shù)公開課課件_第4頁
函數(shù)公開課課件_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

3.2Python程序設計5、函數(shù)“函數(shù)”這個術語來自數(shù)學,最早見于1692年德國教學家Leibniz(萊布尼茨)的著作如果在某一變化過程中有兩個變量x和y,對于變量x在研究范圍內(nèi)的每一個確定的值,變量y都有惟一確定的值和它對應,那么變量x就稱為自變量,而變量y則稱為因變量,或變量x的函數(shù),記為:y=f(x),f稱為函數(shù)名記號f(x)則是由瑞士數(shù)學家Euler(歐拉)于1724年首次使用的在計算機領域,也繼承了這種思維方式,把一段經(jīng)常需要使用的代碼片段封裝起來,記為:y=f(x),f稱為函數(shù)名,x稱為參數(shù),y稱為返回值。在需要使用時可以直接調(diào)用,并且返回結果引言2024/1/6函數(shù)是一種代碼組織方法函數(shù)是為了完成某項任務而組合在一起的相關語句的集合,并被指定了一個名字可重用在Python語言中,函數(shù)分為兩大類:Python語言本身提供的標準函數(shù)和程序員編寫的自定義函數(shù)在編寫Python程序時,可以使用函數(shù)來組織代碼引言2024/1/6函數(shù)定義2024/1/6函數(shù)定義的語法如下:

def

函數(shù)名(形式參數(shù)表):

#函數(shù)體函數(shù)包括函數(shù)頭和函數(shù)體。函數(shù)頭以關鍵字def開始,緊接著函數(shù)名、形式參數(shù)并以冒號結束函數(shù)頭中的參數(shù)被稱為形式參數(shù),簡稱形參。參數(shù)是可選的,函數(shù)可以沒有參數(shù)函數(shù)可以有返回值,也可以沒有返回值。有返回值的函數(shù)需要使用return語句來返回值函數(shù)體包含一個定義函數(shù)做什么的語句集合,必須相對于def向右縮進(一般是向右縮進4個空格)。通過縮進,Python能夠識別出函數(shù)體是隸屬于def的函數(shù)調(diào)用2024/1/6為了使用函數(shù),必須調(diào)用函數(shù)如果函數(shù)帶有返回值,對這種函數(shù)的調(diào)用通常當作值來處理area=computeArea(10)#調(diào)用computeArea函數(shù),并將返回值賦給變量areaprint(computeArea(10))#調(diào)用computeArea函數(shù),并將返回值傳遞給print函數(shù)輸出如果函數(shù)沒有返回值,對函數(shù)的調(diào)用必須是語句print("Programmingisfun")#print函數(shù)沒有返回值帶有返回值的函數(shù)也可以當作語句調(diào)用,這種情況下,函數(shù)返回值被舍棄了computeArea(10)#調(diào)用computeArea函數(shù),返回值被舍棄了如果函數(shù)帶有參數(shù),當調(diào)用函數(shù)時,需要將值傳遞給形參,這個值被稱為實際參數(shù)或?qū)崊ⅲ篴rea=computeArea(10)#10為實參

如果函數(shù)的形參為空,則實參也為空,但()不能省略:print()計算圓面積的程序2024/1/6這里main函數(shù)定義在computeArea函數(shù)之后。其實在Python中,函數(shù)可以定義在源程序文件的任意位置。因此,也可以在computeArea函數(shù)之前定義main函數(shù)computeArea函數(shù)中聲明了形參r和變量area,main函數(shù)中也聲明了變量r和area,盡管同名,但它們是不同的變量,有各自的存儲單元,具有不同的作用域,不會相互干擾函數(shù)調(diào)用2024/1/6當程序調(diào)用一個函數(shù)時,程序控制權就會轉移到被調(diào)用的函數(shù)上。當被調(diào)用函數(shù)執(zhí)行結束,被調(diào)用函數(shù)就會將程序控制權交還給調(diào)用者每次調(diào)用一個函數(shù)時,系統(tǒng)將參數(shù)和局部變量(稱為激活記錄)存儲在一個稱為棧(stack)的內(nèi)存區(qū)域中,棧以后進先出(last-infirst-out,LIFO)的形式存儲元素。函數(shù)調(diào)用結束,從棧中刪除它的激活記錄無返回值的函數(shù)2024/1/6【例】定義一個名為printGrade的函數(shù),然后調(diào)用它打印給定分數(shù)的等級printGrade函數(shù)不返回任何值,在main函數(shù)中,它被作為一個語句調(diào)用帶返回值的函數(shù)2024/1/6【例】定義一個名為getGrade的函數(shù),該函數(shù)返回一個表示等級的字符,然后調(diào)用它獲取給定分數(shù)的等級并輸出getGrade函數(shù)返回一個字符,它可以像調(diào)用一個字符一樣使用,在main函數(shù)中,它被作為一個值來處理重要提示2024/1/6實際上,不管是否使用return語句,所有Python函數(shù)都將返回一個值如果某個函數(shù)沒有返回值,默認情況下,它返回一個特殊值None。因此無返回值的函數(shù)也被稱為None函數(shù)None可以賦值給一個變量,表示這個變量不指向任何對象位置參數(shù)和關鍵字參數(shù)2024/1/6調(diào)用函數(shù)時,可以將實參傳遞給形參實參有兩種類型:位置參數(shù)和關鍵字參數(shù)位置參數(shù):要求實參按形參在函數(shù)頭中的定義順序進行傳遞

關鍵字參數(shù):使用“形參名=值”的形式傳遞每個參數(shù)。使用關鍵字參數(shù),實參可以以任何順序出現(xiàn)位置參數(shù)和關鍵字參數(shù)2024/1/6位置參數(shù)和關鍵字參數(shù)可以混合使用,但調(diào)用函數(shù)時所有位置參數(shù)都要出現(xiàn)在任何關鍵字參數(shù)之前。假設函數(shù)頭是:deffoo(p1,p2,p3):f(30,p2=4,p3=10)f(30,p2=4,10)默認參數(shù)2024/1/6Python可以定義帶默認參數(shù)值的函數(shù)。當調(diào)用該函數(shù)時,若沒有給定實參,這些默認參數(shù)值就會作為實參傳遞給形參默認參數(shù)值參數(shù)和非默認參數(shù)值參數(shù)可以混用,這種情況下,非默認參數(shù)值參數(shù)必須定義在默認參數(shù)值參數(shù)之前:defprintArea(width=1,height):可變長參數(shù)2024/1/6有時在定義函數(shù)時,預先并不知道函數(shù)需要接受多少個實參。這時候,使用可變長參數(shù)就會非常有用可變長參數(shù)也有位置參數(shù)和關鍵字參數(shù)兩種形式形參名*numbers中的*讓Python創(chuàng)建一個名為numbers的空元組,并將所有的實參按先后順序收集到這個元組中,在函數(shù)體內(nèi)部對這個元組進行處理調(diào)用可變長位置參數(shù)的函數(shù)時也可以傳遞一個元組,必須在元組名values前加上*可變長參數(shù)2024/1/6形參名**args中的**讓Python創(chuàng)建一個名為args的空字典,并將所有的實參收集到這個字典中,每個關鍵字形式的參數(shù)調(diào)用,都會成為字典的一個元素,參數(shù)名成為元素的鍵,數(shù)據(jù)成為元素的值,在函數(shù)體內(nèi)部對這個字典進行處理調(diào)用可變長關鍵字參數(shù)的函數(shù)時也可以傳遞一個字典,必須在字典名dicts前加上**可變長參數(shù)可以和其他類型的參數(shù)混合使用定義函數(shù)時,各種類型參數(shù)出現(xiàn)的先后順序是:位置參數(shù)、關鍵字參數(shù)、可變長位置參數(shù)、可變長關鍵字參數(shù)*和**用于函數(shù)調(diào)用2024/1/6除了用于定義函數(shù),*和**還可用于函數(shù)調(diào)用print_args函數(shù)有三個位置參數(shù),調(diào)用函數(shù)時傳遞的是一個元組。一個元組是無法和三個參數(shù)對應的。通過在元組名args前加上*,來提醒Python把元組拆成三個元素,每個元素對應函數(shù)的一個位置參數(shù),元組的三個元素分別賦予了三個參數(shù)同樣,在傳遞字典args時,通過在字典名args前加上**,來提醒Python把字典拆成三個鍵/值對,每個鍵/值對作為一個關鍵字參數(shù)(鍵對應參數(shù)名,值對應參數(shù)值)傳遞給函數(shù),字典的三個鍵/值對分別賦予了三個參數(shù)返回多個值2024/1/6Python的return語句可以返回多個值foo函數(shù)返回4個值,當它被調(diào)用時,需要同時賦值給4個變量參數(shù)傳遞2024/1/6Python中的所有數(shù)據(jù)都是對象,對象的變量通常都是指向?qū)ο蟮囊卯斦{(diào)用一個帶參數(shù)的函數(shù)時,每個實參的引用值就被傳遞給形參如果實參是數(shù)字或字符串,那么不管函數(shù)中的形參有沒有變化,實參是不受影響的。因為數(shù)字和字符串是不可變對象,不可變對象的內(nèi)容是不能被更改的模塊化代碼2024/1/6模塊化使代碼易于維護和調(diào)試,提高代碼的重用性像前面使用過的math、random、time等模塊是Python中定義的標準模塊,它們可以被導入到任何一個Python程序中自定義模塊:將函數(shù)的定義放在一個被稱為模塊的文件中,模塊文件的后綴名是.py,之后模塊可以被導入到程序中以便重復使用一個模塊可以包含多個函數(shù),每個函數(shù)應該有不同的名字若在一個模塊中定義了同名函數(shù),不會出現(xiàn)語法錯誤,但優(yōu)先使用最后定義的同名函數(shù)模塊文件應該和使用該模塊的其他程序文件一起存放在同一個地方模塊化代碼2024/1/6定義一個求最大公約數(shù)的gcd函數(shù),存放在一個名為gcd_function.py的模塊中,在其他程序中使用該模塊求最大公約數(shù)模塊化代碼2024/1/6導入整個模塊:import模塊名。使用模塊中的函數(shù):模塊名.函數(shù)名(…)例如:importgcd_function

gcd_function.gcd(m,n)導入模塊中的特定函數(shù):from模塊名import函數(shù)名。使用模塊中的該函數(shù):函數(shù)名(…)例如:fromgcd_functionimportgcd

gcd(m,n)導入模塊中的所有函數(shù):from模塊名import*。使用模塊中的函數(shù):函數(shù)名(…)例如:fromgcd_functionimport*gcd(m,n)使用as給模塊指定別名:import模塊名as別名。使用模塊中的函數(shù):別名.函數(shù)名(…)例如:importgcd_functionasgf

gf.gcd(m,n)變量的作用域2024/1/6變量的作用域是指變量可以在程序中被引用的范圍在函數(shù)內(nèi)部定義的變量被稱為局部變量。局部變量只能在函數(shù)內(nèi)部被訪問main函數(shù)中的變量x和foo函數(shù)中的變量x是不同的變量,互不干擾。Python在處理時,將它們的名字變成類似main_x和foo_x這樣的名字main函數(shù)中的變量x無法被foo函數(shù)識別,產(chǎn)生NameError異常變量的作用域2024/1/6變量的作用域是指變量可以在程序中被引用的范圍在所有函數(shù)之外定義的變量被稱為全局變量,可以被所有的函數(shù)訪問變量的作用域2024/1/6若輸入一個正數(shù),變量y被定義,值為4。若輸入一個非正數(shù),變量y沒有被定義,程序出錯在for循環(huán)中定義了變量i,循環(huán)結束后,i值為4Lambda表達式2024/1/6Lambda表達式是由一行代碼構成的匿名函數(shù),經(jīng)常在

溫馨提示

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

評論

0/150

提交評論