版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
函數(shù)“計(jì)算機(jī)類精品系列教材Python程序設(shè)計(jì)第五章01函數(shù)定義一、函數(shù)定義在Python中,函數(shù)通過(guò)關(guān)鍵字def定義,它是define的縮寫(xiě)。關(guān)鍵字def后加函數(shù)的名稱和一對(duì)圓括號(hào),圓括號(hào)之中可以根據(jù)實(shí)際需要定義函數(shù)的參數(shù),以冒號(hào)結(jié)尾。下一行帶有縮進(jìn)的語(yǔ)句塊為函數(shù)體。函數(shù)定義的語(yǔ)法結(jié)構(gòu)如下:def函數(shù)名(參數(shù)列表);函數(shù)體在定義函數(shù)時(shí),函數(shù)的名稱應(yīng)該能夠表達(dá)函數(shù)封裝代碼的功能,方便后續(xù)的調(diào)用,并且函數(shù)名稱的命名應(yīng)該符合標(biāo)識(shí)符的命名規(guī)則。函數(shù)的參數(shù)列表根據(jù)實(shí)際需要可有可無(wú)。函數(shù)使用return語(yǔ)句返回值,return后面的表達(dá)式或值為這次函數(shù)調(diào)用的返回值。如果函數(shù)沒(méi)有使用return語(yǔ)句返回,則函數(shù)的返回值為None。如果return后面沒(méi)有任何表達(dá)式,則調(diào)用這個(gè)函數(shù)的返回值也為None。一、函數(shù)定義例如:此外,return語(yǔ)句可以返回多個(gè)值。此時(shí),Python會(huì)將多個(gè)值轉(zhuǎn)換為元組返回,接收返回值時(shí)可以使用一個(gè)變量來(lái)保存返回的元組值,也可以使用和返回值個(gè)數(shù)相同的多個(gè)變量分別接收對(duì)應(yīng)的返回值。一、函數(shù)定義例如,下面的代碼定義了一個(gè)求一個(gè)列表中的最大值和最小值的函數(shù)。上面代碼中的兩種調(diào)用方式得到了相同的結(jié)果,但使用多個(gè)變量接收多個(gè)返回值的方式使得代碼的可讀性更好。02函數(shù)調(diào)用二、函數(shù)調(diào)用在調(diào)用函數(shù)時(shí),程序的運(yùn)行將從調(diào)用函數(shù)的行跳到函數(shù)定義的行,并將參數(shù)傳遞到函數(shù)體內(nèi)。在函數(shù)運(yùn)行結(jié)束后,程序?qū)⒗^續(xù)執(zhí)行函數(shù)調(diào)用的下一條語(yǔ)句。例如:上面代碼在運(yùn)行時(shí),首先會(huì)記住函數(shù)定義的名稱,跳過(guò)函數(shù)體,向下運(yùn)行。在運(yùn)行到b=times2(a)時(shí),將攜帶a的參數(shù)值,跳到times2()函數(shù)處,將a的值賦給x,并在函數(shù)體內(nèi)完成運(yùn)算。函數(shù)運(yùn)行結(jié)束后,返回值賦給b,程序?qū)⒗^續(xù)執(zhí)行調(diào)用函數(shù)的下一條語(yǔ)句。在本例中,調(diào)用完times2()函數(shù)后,將繼續(xù)執(zhí)行print(b)語(yǔ)句。二、函數(shù)調(diào)用此外,在Python中,也可以在表達(dá)式或函數(shù)中調(diào)用自定義函數(shù)。例如:03函數(shù)的參數(shù)傳遞三、函數(shù)的參數(shù)傳遞01形式參數(shù)與實(shí)際參數(shù)形式參數(shù)簡(jiǎn)稱形參,并不是實(shí)際存在的變量,而是在定義函數(shù)名和函數(shù)體時(shí)使用的參數(shù),目的是接收調(diào)用該函數(shù)時(shí)傳入的參數(shù)。在調(diào)用函數(shù)時(shí),傳遞的實(shí)際參數(shù)被稱為實(shí)參,實(shí)參將值賦給形參。因而,必須注意實(shí)參的個(gè)數(shù)、類型應(yīng)與形參一一對(duì)應(yīng),并且實(shí)參必須要有確定的值。實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,無(wú)論實(shí)參是何種類型,在函數(shù)調(diào)用時(shí),它都必須具有確定的值,以便把這些值傳遞給形參。因此,應(yīng)先使用賦值、輸入等方法使實(shí)參在調(diào)用函數(shù)之前獲得確定值。三、函數(shù)的參數(shù)傳遞02位置參數(shù)Python處理參數(shù)的方式要比其他語(yǔ)言更加靈活。其中,使用位置參數(shù)就是調(diào)用函數(shù)時(shí)進(jìn)行參數(shù)傳遞的一種常用方式,實(shí)參是通過(guò)位置按照次序和形參一一對(duì)應(yīng)的。三、函數(shù)的參數(shù)傳遞03關(guān)鍵字參數(shù)為了避免位置參數(shù)帶來(lái)的順序混亂,調(diào)用參數(shù)時(shí)可以指定對(duì)應(yīng)參數(shù)的名字,這就是關(guān)鍵字參數(shù)。關(guān)鍵字參數(shù)可以使用與函數(shù)定義時(shí)的參數(shù)的順序完全不同的方式進(jìn)行參數(shù)傳遞。例如:位置參數(shù)要求實(shí)參和形參必須在次序上一一對(duì)應(yīng),而關(guān)鍵字參數(shù)則不需要在次序上與形參保持一致。上面代碼的輸出結(jié)果如下:三、函數(shù)的參數(shù)傳遞04默認(rèn)值參數(shù)在定義形參時(shí),可以為形參指定默認(rèn)值,從而使函數(shù)調(diào)用時(shí)在缺少該參數(shù)的情況下使用該參數(shù)指定的默認(rèn)值。例如:三、函數(shù)的參數(shù)傳遞04默認(rèn)值參數(shù)上述調(diào)用的輸出結(jié)果如下:默認(rèn)值參數(shù)在函數(shù)定義時(shí)就已經(jīng)計(jì)算完成,因此不要把可變的數(shù)據(jù)類型設(shè)置為函數(shù)的默認(rèn)值參數(shù),否則會(huì)輸出出乎預(yù)料的結(jié)果。例如:上述調(diào)用會(huì)輸出以下結(jié)果,與預(yù)期的輸出結(jié)果并不相同。三、函數(shù)的參數(shù)傳遞04默認(rèn)值參數(shù)此外,Python中的所有默認(rèn)值參數(shù)必須位于沒(méi)有默認(rèn)值參數(shù)的后面。例如:上述代碼的運(yùn)行結(jié)果如下:04匿名函數(shù)四、匿名函數(shù)在Python中,不通過(guò)關(guān)鍵字def來(lái)聲明函數(shù)名,而是通過(guò)關(guān)鍵字lambda來(lái)定義的函數(shù)被稱為lambda()函數(shù),又稱匿名函數(shù)。lambda()函數(shù)可以接收多個(gè)(可以是0個(gè))參數(shù),但只能返回一個(gè)表達(dá)式的值,lambda()函數(shù)是一個(gè)函數(shù)對(duì)象,直接賦值給一個(gè)變量。其語(yǔ)法結(jié)構(gòu)如下:lambda<參數(shù)>:<表達(dá)式>lambda()函數(shù)適用于多個(gè)參數(shù)、一個(gè)返回值的情況,函數(shù)結(jié)果用一個(gè)變量來(lái)接收。執(zhí)行l(wèi)ambda()函數(shù)的結(jié)果與執(zhí)行普通函數(shù)的結(jié)果一樣,但是lambda()函數(shù)比普通函數(shù)更簡(jiǎn)潔,且無(wú)須聲明函數(shù)名。05函數(shù)的嵌套與遞歸五、函數(shù)的嵌套與遞歸01函數(shù)嵌套函數(shù)嵌套是指在函數(shù)體的內(nèi)部繼續(xù)進(jìn)行函數(shù)的定義。一般在以下情況使用函數(shù)嵌套:封裝函數(shù)的內(nèi)部數(shù)據(jù),即函數(shù)外部無(wú)法訪問(wèn)函數(shù)的嵌套部分;在函數(shù)內(nèi)部避免重復(fù)代碼,即堅(jiān)持DRY(Don'trepeatyourself)原則。例如:五、函數(shù)的嵌套與遞歸02函數(shù)遞歸函數(shù)直接或間接調(diào)用函數(shù)自身的方法被稱為遞歸。遞歸作為一種算法在程序設(shè)計(jì)過(guò)程中被廣泛使用。它通常把一個(gè)大型的、復(fù)雜的問(wèn)題轉(zhuǎn)換為一個(gè)與原問(wèn)題相似的、規(guī)模較小的問(wèn)題來(lái)求解。一般來(lái)說(shuō),遞歸需要設(shè)置終止條件和遞歸條件,終止條件用來(lái)終止遞歸繼續(xù)進(jìn)行并返回結(jié)果,避免進(jìn)入無(wú)限循環(huán)。斐波那契數(shù)列是一個(gè)函數(shù)遞歸的常見(jiàn)應(yīng)用,它的前兩項(xiàng)為1,從第3項(xiàng)開(kāi)始,每一項(xiàng)都是其前兩項(xiàng)的和。例如,設(shè)計(jì)函數(shù)返回斐波那契數(shù)列的第n項(xiàng):06常用的內(nèi)置函數(shù)六、常用的內(nèi)置函數(shù)01進(jìn)制轉(zhuǎn)換函數(shù)在Python編程中,經(jīng)常會(huì)使用二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制整數(shù)。Python內(nèi)置了將不同進(jìn)制的整數(shù)轉(zhuǎn)換為對(duì)應(yīng)進(jìn)制的字符串函數(shù)。將整數(shù)轉(zhuǎn)換為二進(jìn)制、八進(jìn)制、十六進(jìn)制字符串的函數(shù)分別是bin()、oct()、hex)函數(shù)。例如:六、常用的內(nèi)置函數(shù)02slice()函數(shù)slice()函數(shù)是一個(gè)切片函數(shù),可以作用于列表、元組等結(jié)構(gòu),其作用類似于列表中常見(jiàn)的切片操作。其語(yǔ)法結(jié)構(gòu)如下:slice(start,end,step)start,end和step分別定義了slice的起點(diǎn),終點(diǎn)和步長(zhǎng)。在不設(shè)置step時(shí),其默認(rèn)值為1。六、常用的內(nèi)置函數(shù)03divmod()函數(shù)divmod(函數(shù)是一個(gè)整合了整數(shù)除法和求余操作的函數(shù)。其語(yǔ)法結(jié)構(gòu)如下:aivmod(a,b)函數(shù)將返回一個(gè)元組,元組的第0個(gè)元素為a對(duì)b做整數(shù)除法的結(jié)果,元組的第1個(gè)元素為a對(duì)b做除法后的余數(shù)。例如:六、常用的內(nèi)置函數(shù)04sorted()函數(shù)sorted()函數(shù)可以對(duì)字符串、列表、元組等對(duì)象進(jìn)行排序操作。以列表為例,與list對(duì)象的sort方法不同,內(nèi)置函數(shù)sorted()的返回值為重新排列后的新列表,而不是在原來(lái)列表的基礎(chǔ)上進(jìn)行操作。其語(yǔ)法結(jié)構(gòu)如下:sorted(iterable,key-None,reverse-True)其中,iterable表示序列,如字符串、列表、元組等;key主要是用來(lái)進(jìn)行比較的元素,只有一個(gè)參數(shù),具體函數(shù)的參數(shù)取自可迭代對(duì)象,指定可迭代對(duì)象中的一個(gè)元素來(lái)進(jìn)行排序;reverse控制排序規(guī)則,使用reverse=True為降序,使用reverse=False為升序(默認(rèn))。六、常用的內(nèi)置函數(shù)05ord()函數(shù)和chr()函數(shù)字符在計(jì)算機(jī)中存儲(chǔ)的形式為ASCII值,Python中內(nèi)置的ord()函數(shù)和chr()函數(shù)可以將字符與ASCII值相互轉(zhuǎn)換。例如:六、常用的內(nèi)置函數(shù)內(nèi)置函數(shù)round()用于將參數(shù)的小數(shù)部分通過(guò)四舍五入的方式化簡(jiǎn)。其語(yǔ)法結(jié)構(gòu)如下:round(x,n)其中,參數(shù)x表示一個(gè)數(shù)值或一個(gè)數(shù)值表達(dá)式,可選參數(shù)n表示要求小數(shù)部分化簡(jiǎn)到多少位,默認(rèn)化簡(jiǎn)到整數(shù)部分。例如:06round()函數(shù)07變量的作用域七、變量的作用域在Python解釋器啟動(dòng)時(shí),會(huì)建立一個(gè)初始環(huán)境,其中有一個(gè)內(nèi)置命名空間,記錄所有的標(biāo)準(zhǔn)常量名、標(biāo)準(zhǔn)函數(shù)名等。在程序運(yùn)行時(shí),會(huì)建立一個(gè)全局命名空間,全局變量就放在這個(gè)空間中。每個(gè)函數(shù)定義自己的命名空間,函數(shù)內(nèi)部定義的變量是局部變量。如果在一個(gè)函數(shù)中定義一個(gè)變量x,在另一個(gè)函數(shù)中也定義一個(gè)變量x,因?yàn)槭窃诓煌拿臻g定義的,所以兩者指代的是不同的變量??梢酝ㄟ^(guò)多種方式獲取其他命名空間的變量。每個(gè)程序在函數(shù)外是全局命名空間,全局命名空間中的變量是全局變量。全局變量為定義在函數(shù)外,存在于整個(gè)程序的變量;局部變量為定義在函數(shù)內(nèi),存在于該函數(shù)內(nèi)部的變量。七、變量的作用域可
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 魯教版地理六年級(jí)下冊(cè)6.1《位置和范圍》聽(tīng)課評(píng)課記錄3
- 【部編人教版】八年級(jí)上冊(cè)歷史聽(tīng)課評(píng)課記錄 第11課 北洋政府的黑暗統(tǒng)治
- 浙教版數(shù)學(xué)七年級(jí)上冊(cè)5.2《解法》聽(tīng)評(píng)課記錄
- 環(huán)境監(jiān)測(cè)承包協(xié)議書(shū)
- 人教版地理八年級(jí)上冊(cè)《第一節(jié) 交通運(yùn)輸》聽(tīng)課評(píng)課記錄1
- 滬教版數(shù)學(xué)八年級(jí)下冊(cè)20.2《一次函數(shù)的圖象與性質(zhì)》聽(tīng)評(píng)課記錄1
- 湘教版數(shù)學(xué)九年級(jí)下冊(cè)《1.5 二次函數(shù)的應(yīng)用》聽(tīng)評(píng)課記錄1
- 六年級(jí)科學(xué)斜面聽(tīng)評(píng)課記錄
- 新北師大版數(shù)學(xué)一年級(jí)下冊(cè)《采松果》聽(tīng)評(píng)課記錄
- 蘇科版數(shù)學(xué)九年級(jí)上冊(cè)聽(tīng)評(píng)課記錄 用一元二次方程解決問(wèn)題
- 北京理工大學(xué)應(yīng)用光學(xué)課件(大全)李林
- 國(guó)家綜合性消防救援隊(duì)伍消防員管理規(guī)定
- 河南省三門(mén)峽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 2023年全國(guó)各地高考英語(yǔ)試卷:完形填空匯編(9篇-含解析)
- 五年級(jí)上冊(cè)數(shù)學(xué)習(xí)題課件 簡(jiǎn)便計(jì)算專項(xiàng)整理 蘇教版 共21張
- 疼痛科的建立和建設(shè)
- 運(yùn)動(dòng)技能學(xué)習(xí)PPT課件
- 第六編元代文學(xué)
- 高考語(yǔ)文古詩(shī)詞必背重點(diǎn)提綱
- 超星爾雅學(xué)習(xí)通《大學(xué)生心理健康教育(蘭州大學(xué)版)》章節(jié)測(cè)試含答案
- 2020譯林版高中英語(yǔ)選擇性必修二單詞默寫(xiě)表
評(píng)論
0/150
提交評(píng)論