2020-2021學(xué)年信息技術(shù)第六課 python函數(shù)_第1頁(yè)
2020-2021學(xué)年信息技術(shù)第六課 python函數(shù)_第2頁(yè)
2020-2021學(xué)年信息技術(shù)第六課 python函數(shù)_第3頁(yè)
2020-2021學(xué)年信息技術(shù)第六課 python函數(shù)_第4頁(yè)
2020-2021學(xué)年信息技術(shù)第六課 python函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Python函數(shù)函數(shù)的概述01函數(shù)的定義

一個(gè)程序可以按不同的功能實(shí)現(xiàn)拆分成不同的模塊,而函數(shù)就是能實(shí)現(xiàn)某一部分功能的代碼塊。在Python中,定義一個(gè)函數(shù)要使用def語(yǔ)句,依次寫(xiě)出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào)(:),然后在縮進(jìn)塊中編寫(xiě)函數(shù)體,函數(shù)的返回值用return語(yǔ)句返回。注意:Python是靠縮進(jìn)塊來(lái)標(biāo)明函數(shù)的作用域范圍的,縮進(jìn)塊內(nèi)是函數(shù)體,這和其它高級(jí)編程語(yǔ)言是有區(qū)別的,比如:C/C++/java/R語(yǔ)言大括號(hào){}內(nèi)的是函數(shù)體。函數(shù)的概述01

我們以自定義一個(gè)求正方形面積的函數(shù)area_square為例,示例代碼如下:

defarea_square(x):

s=x*xreturnsPython不但能非常靈活地定義函數(shù),而且本身內(nèi)置了很多有用的函數(shù),可以直接調(diào)用。函數(shù)的概述01全局變量

在函數(shù)外面定義的變量稱為全局變量。全局變量的作用域在整個(gè)代碼段(文件、模塊),在整個(gè)程序代碼中都能被訪問(wèn)到。在函數(shù)內(nèi)部可以去訪問(wèn)全局變量。如下所示代碼:

deffoodsprice(per_price,number):

sum_price=per_price*number

print('全局變量PER_PRICE_1的值:',PER_PRICE_1)

returnsum_pricePER_PRICE_1=float(input('請(qǐng)輸入單價(jià):'))NUMBER_1=float(input('請(qǐng)輸入斤數(shù):'))SUM_PRICE_1=foodsprice(PER_PRICE_1,NUMBER_1)print('蔬菜的價(jià)格是:',SUM_PRICE_1)

函數(shù)的概述01

代碼運(yùn)行結(jié)果如下:

請(qǐng)輸入單價(jià):21請(qǐng)輸入斤數(shù):7.5全局變量PER_PRICE_1:21.0 蔬菜的價(jià)格是:157.5在上例中,我們?cè)诙x的函數(shù)foodsprice內(nèi)部去訪問(wèn)在函數(shù)外面定義的全局變量PER_PRICE_1,能得到期望的輸入結(jié)果21。

函數(shù)的概述01

在函數(shù)內(nèi)部可以去訪問(wèn)全局變量,但不要去修改全局變量,否則會(huì)得不到想要的結(jié)果。這是因?yàn)樵诤瘮?shù)內(nèi)部試圖去修改一個(gè)全局變量時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)新的同名的局部變量去代替全局變量,采用屏蔽(Shadowing)的方式,當(dāng)函數(shù)調(diào)用結(jié)束后函數(shù)的棧空間會(huì)被釋放,數(shù)據(jù)也會(huì)隨之釋放。如果要在函數(shù)內(nèi)部去修改全局變量的值,并使之在整個(gè)程序生效,采用關(guān)鍵字global即可。

函數(shù)的概述01

在函數(shù)內(nèi)部定義的參數(shù)和變量稱為局部變量,超出了這個(gè)函數(shù)的作用域局部變量是無(wú)效的,它的作用域僅在函數(shù)內(nèi)部。如下所示代碼:deffoodsprice(per_price,number):

sum_price=per_price*number

returnsum_pricePER_PRICE_1=float(input('請(qǐng)輸入單價(jià):'))NUMBER_1=float(input('請(qǐng)輸入斤數(shù):'))SUM_PRICE_1=foodsprice(PER_PRICE_1,NUMBER_1)

print('蔬菜的價(jià)格是:',SUM_PRICE_1)print('局部變量sum_price的值:',sum_price)

函數(shù)的概述01

代碼運(yùn)行結(jié)果如下:請(qǐng)輸入單價(jià):12請(qǐng)輸入斤數(shù):1.56蔬菜的價(jià)格是:18.72Traceback(mostrecentcalllast):

File"G:/6_1_3.py",line9,in<module>print('局部變量sum_price的值:',sum_price)NameError:name'sum_price'isnotdefined在上例中,我們?cè)噲D在函數(shù)作用域外訪問(wèn)函數(shù)內(nèi)的局部變量sum_price,程序運(yùn)行到此處時(shí)報(bào)出了NameError的異常,提示變量sum_price沒(méi)有定義。

函數(shù)的參數(shù)與返回值01函數(shù)的參數(shù)就是使得函數(shù)個(gè)性化的一個(gè)實(shí)例。代碼如下所示:>>>defMyFirstFunction(name_city): print(‘我喜歡的城市:’+name_city)運(yùn)行結(jié)果如下:>>>MyFirstFunction('南京')我喜歡的城市:南京>>>MyFirstFunction('上海')我喜歡的城市:上海在上例中,我們對(duì)函數(shù)MyFirstFunction的形參name_city賦予不同的實(shí)參“南京”、“上?!焙?,函數(shù)就輸出不同的結(jié)果。

函數(shù)的參數(shù)與返回值01

函數(shù)有了參數(shù)之后,函數(shù)的輸出結(jié)果變得可變了,如果需要多個(gè)參數(shù),函數(shù)用逗號(hào)“,”(英文狀態(tài)下輸入)隔開(kāi)即可。在Python中對(duì)函數(shù)參數(shù)的數(shù)量沒(méi)有限制,但是定義函數(shù)參數(shù)的個(gè)數(shù)不宜太多,一般2~3個(gè)即可。在定義函數(shù)時(shí),一般要把函數(shù)參數(shù)的意義注釋清楚,便于閱讀程序。那什么是形參和實(shí)參呢?函數(shù)小括號(hào)“()”內(nèi)的參數(shù)叫形參。而實(shí)參則是指函數(shù)在調(diào)用過(guò)程中傳遞進(jìn)來(lái)的參數(shù)。

函數(shù)的參數(shù)與返回值01參數(shù)傳遞的方式:在Python中,將函數(shù)參數(shù)分為三類:位置參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù)。

(1)位置參數(shù)直接傳入?yún)?shù)數(shù)據(jù)即可,如果有多個(gè)參數(shù),位置先后順序不能改變。(2)可變參數(shù)。有2種傳遞方式:1是直接傳入?yún)?shù)值;2是先封裝成列表(list)或元組(tuple),再在封裝后的列表或元組前面添加一個(gè)星號(hào)“*”傳入。(3)關(guān)鍵字參數(shù)。有2種傳遞方式:1是直接傳入?yún)?shù)值;2是可以先將參數(shù)封裝成字典(dict),再在封裝后的字典前添加2個(gè)星號(hào)“**”傳入。

函數(shù)的參數(shù)與返回值01

位置參數(shù)和關(guān)鍵字參數(shù)

(1)位置參數(shù)我們調(diào)用函數(shù)時(shí),傳入?yún)?shù)值按照位置順序依次賦給參數(shù),這樣的參數(shù)稱為位置參數(shù)。如下所示代碼:defSub(x,y):returnx-y運(yùn)行結(jié)果如下:>>>Sub(100,30)70

函數(shù)的參數(shù)與返回值01上例中,Sub(x,y)函數(shù)有兩個(gè)參數(shù):x和y,這兩個(gè)參數(shù)都是位置參數(shù),調(diào)用函數(shù)時(shí),傳入的兩個(gè)值按照位置順序依次賦給參數(shù)x和y,得到的兩數(shù)相減的結(jié)果是70。如果交換了參數(shù)的位置,就會(huì)得到不同的結(jié)果,如上例中交換參數(shù)后的運(yùn)行結(jié)果如下:>>>Sub(30,100)-70從上面的運(yùn)行結(jié)果可以看出,交換了參數(shù)順序后的運(yùn)行結(jié)果是-70,而不是我們期望的結(jié)果70。

函數(shù)的參數(shù)與返回值01關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)就是在函數(shù)調(diào)用的時(shí)候,通過(guò)參數(shù)名指定需要賦值的參數(shù)。通常我們?cè)谡{(diào)用一個(gè)函數(shù)的時(shí)候,如果參數(shù)有多個(gè),我們常常會(huì)混淆一個(gè)參數(shù)的順序,達(dá)不到我們希望的效果。在Python中引入關(guān)鍵字參數(shù)就可解決這個(gè)潛在的問(wèn)題。如下所示代碼:>>>defSubtraction(num_1,num_2): return(num_1-num_2)

函數(shù)的參數(shù)與返回值01運(yùn)行結(jié)果如下:>>>Subtraction(34,11)23>>>Subtraction(11,34)-23>>>Subtraction(num_2=11,num_1=34)23

函數(shù)的參數(shù)與返回值01

在上例中,我們調(diào)用函數(shù)Subtraction時(shí):第1次調(diào)用函數(shù)Subtraction時(shí),給2個(gè)參數(shù)順序賦值34、11時(shí)得到的結(jié)果是23;第2次調(diào)用該函數(shù)時(shí),交換了2個(gè)賦值參數(shù)的順序得到的結(jié)果是-23,這不是所期望的結(jié)果;第3次調(diào)用該函數(shù)時(shí),引用了關(guān)鍵字參數(shù)并對(duì)其分別賦值,雖然改變了順序,但仍然得到了所期望的結(jié)果23。

函數(shù)的參數(shù)與返回值01默認(rèn)值參數(shù):運(yùn)行結(jié)果如下:>>>Subtraction()54>>>Subtraction(46)1>>>Subtraction(46,12)34

函數(shù)的參數(shù)與返回值01在上例中,函數(shù)Subtraction的功能為:返回兩個(gè)數(shù)相減的結(jié)果,在定義函數(shù)時(shí)分別給2個(gè)參數(shù)num_1,num_2賦了初值99和45,分別做了3次調(diào)用:第1次調(diào)用時(shí)沒(méi)有賦值,程序就引用了2個(gè)參數(shù)的默認(rèn)值99,45,返回的結(jié)果是54;第2次調(diào)用時(shí),給第1個(gè)參數(shù)賦值為46,程序就引用了第2個(gè)參數(shù)的默認(rèn)值45,返回的結(jié)果是1;第3次調(diào)用時(shí),給2個(gè)參數(shù)分別賦值為46和12,程序就沒(méi)有引用函數(shù)定義的默認(rèn)值,返回的結(jié)果是34。

函數(shù)的參數(shù)與返回值01可變參數(shù):當(dāng)在定義函數(shù)參數(shù)的時(shí)候,我們不知道究竟需要多少個(gè)參數(shù)的時(shí)候,只要在參數(shù)前面加上星號(hào)“*”即可,這樣的參數(shù)稱為可變參數(shù)。如下所示代碼:>>>defval_par(*param): print

溫馨提示

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

評(píng)論

0/150

提交評(píng)論