




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章函數(shù)主講人:***13-10月-23Python數(shù)據(jù)分析與數(shù)據(jù)挖掘目錄contents函數(shù)概述0102函數(shù)的定義03參數(shù)傳遞04函數(shù)參數(shù)設(shè)置匿名函數(shù)0506遞歸函數(shù)3.1函數(shù)概述013.1.1模塊和包Python程序是由函數(shù)(Function)、模塊(Module)和包(Package)組成。其中,模塊是處理某一類問題的變量、函數(shù)和類的集合,包是由一系列模塊組成的集合。模塊是一個(gè)Python文件,以.py結(jié)尾,模塊中能定義函數(shù)、類和變量,模塊里也能包含可執(zhí)行的代碼,運(yùn)用模塊能夠有邏輯地組織Python代碼段。常用的模塊導(dǎo)入方式:importmodule1(模塊名)frommodule1import*(*表示導(dǎo)入該模塊中所有函數(shù)及變量等)frommodule1importname1(表示導(dǎo)入模塊中的一個(gè)指定的部分)包是一個(gè)分層次的文件目錄結(jié)構(gòu),它定義了一個(gè)由模塊及子包和子包下的子包等組成的Python的應(yīng)用環(huán)境。簡(jiǎn)單來說,包就是文件夾,但該文件夾下必須存在__init__.py文件,該文件的內(nèi)容可以為空。__init__.py用于標(biāo)識(shí)當(dāng)前文件夾是一個(gè)包。3.1.1模塊和包3.1.2函數(shù)如果在開發(fā)程序時(shí),需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊,這就是函數(shù)。函數(shù)是Python為了代碼效率的最大化,減少冗余而提供的最基本的程序結(jié)構(gòu)。函數(shù)是一段代碼,通過名字來進(jìn)行調(diào)用,它能將一些數(shù)據(jù)(參數(shù))傳遞進(jìn)去進(jìn)行處理,然后返回一些數(shù)據(jù)(返回值),也可以沒有返回值。3.2函數(shù)的定義023.2函數(shù)的定義函數(shù)定義的格式:def函數(shù)名():
函數(shù)體注意:函數(shù)定義后,如果不經(jīng)調(diào)用,函數(shù)將不會(huì)被執(zhí)行Python中自定義函數(shù)創(chuàng)建的方法如下,使用關(guān)鍵字def定義函數(shù),其后緊接函數(shù)名,括號(hào)內(nèi)包含了將要在函數(shù)體中使用的形式參數(shù)(簡(jiǎn)稱:形參,調(diào)用函數(shù)時(shí)的為實(shí)參;函數(shù)可以有參數(shù),也可以沒有,但必須保留括號(hào)),以冒號(hào)結(jié)束。然后另起一行編寫函數(shù)體,函數(shù)體的縮進(jìn)為4個(gè)空格或者一個(gè)制表符。[例3-1]函數(shù)的定義舉例。3.2函數(shù)的定義[例3-2]用函數(shù)實(shí)現(xiàn)fabonaci序列。3.2函數(shù)的定義3.3參數(shù)傳遞03Python中函數(shù)參數(shù)的傳遞,可以分為實(shí)參為不可變對(duì)象的傳遞和實(shí)參為可變對(duì)象的傳遞。字符串、元組、數(shù)值等類型是不可更改的對(duì)象,而列表和字典等則是可以修改的對(duì)象。若實(shí)參為不可變對(duì)象時(shí),即使函數(shù)體中修改了形參,實(shí)參的值在函數(shù)調(diào)用返回時(shí)仍然保持不變;如果函數(shù)調(diào)用時(shí),參數(shù)為可變對(duì)象的傳遞,若函數(shù)體中修改了形參,則實(shí)參的值會(huì)隨之發(fā)生改變。3.3.1實(shí)參變量指向不可變變量實(shí)參變量可以指向不可變的對(duì)象,如整型。不可變對(duì)象是指對(duì)象所指向的內(nèi)存中的值不能被改變,當(dāng)改變這個(gè)變量的時(shí)候,原來指向的內(nèi)存中的值不變,變量不再指向原來的值,而是開辟一塊新的內(nèi)存,變量指向新的內(nèi)存。[例3-3]實(shí)參變量指向不可變對(duì)象實(shí)例。3.3.1實(shí)參變量指向不可變對(duì)象分析:在Python中,類型屬于對(duì)象,變量是沒有類型的,變量只是指向了對(duì)象。本例函數(shù)調(diào)用時(shí),在參數(shù)傳遞后,實(shí)參變量x和形參變量a都指向?qū)ο?(整型)。在函數(shù)change()內(nèi),對(duì)a賦新值4,即a+1后,由于不可變對(duì)象的值不能變化,所以為4分配新的內(nèi)存單元,同時(shí)使a指向這個(gè)對(duì)象。函數(shù)調(diào)用返回時(shí),由于變量x和a指向了不同的對(duì)象,而x所指向的不可變對(duì)象內(nèi)存地址一直沒變,所以輸出的x的值也不變。實(shí)參變量可以指向可變對(duì)象,如列表??勺儗?duì)象是指對(duì)象的值可以改變,當(dāng)更改這個(gè)變量的時(shí)候,還是指向原來的內(nèi)存地址,只是在原來的內(nèi)存地址進(jìn)行值的修改,并沒有開辟新的內(nèi)存。3.3.2實(shí)參變量指向可變變量[例3-4]實(shí)參變量指向可變對(duì)象實(shí)例。3.3.2實(shí)參變量指向可變變量分析:本例函數(shù)調(diào)用時(shí),在參數(shù)傳遞后,實(shí)參變量x和形參變量a都指向同一個(gè)列表(list)對(duì)象[1,2]。由于列表對(duì)象本身是可以改變的,因此在change函數(shù)里,向列表中加入一個(gè)元素,不會(huì)重新創(chuàng)建對(duì)象,而是直接在原對(duì)象中添加了新的元素。調(diào)用結(jié)束后,變量x和a仍然指向同一對(duì)象,改變a指向?qū)ο蟮闹狄簿透淖兞藊的指向?qū)ο蟮闹怠?.4函數(shù)參數(shù)設(shè)置043.4.1函數(shù)參數(shù)類型Python中的函數(shù)參數(shù)主要有以下四種:位置參數(shù):調(diào)用函數(shù)時(shí),根據(jù)函數(shù)定義的參數(shù)位置來傳遞參數(shù),實(shí)參的個(gè)數(shù)和順序必須和形參保持一致,否則會(huì)拋出異常。默認(rèn)參數(shù):在定義函數(shù)時(shí),為部分形參設(shè)置了默認(rèn)值,調(diào)用函數(shù)時(shí)可傳或不傳該默認(rèn)參數(shù)的值(注意:所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前,包括函數(shù)定義和調(diào)用)。關(guān)鍵字參數(shù):函數(shù)調(diào)用時(shí),可以通過“鍵-值”形式指定參數(shù),即傳參時(shí)把定義函數(shù)時(shí)的參數(shù)名和對(duì)應(yīng)的值一起傳入函數(shù)中,此時(shí)可不考慮傳入?yún)?shù)的順序。可變參數(shù):主要包括任意數(shù)量的可變位置參數(shù)和任意數(shù)量的關(guān)鍵字可變參數(shù),*args參數(shù)傳入時(shí)存儲(chǔ)在元組中,**kwargs參數(shù)傳入時(shí)存儲(chǔ)在字典內(nèi)。。[例3-5]沒有參數(shù)的函數(shù)。3.4.1函數(shù)參數(shù)類型注意:__name__可以獲取函數(shù)的名稱,__doc__可以獲取函數(shù)的注釋信息。[例3-6]用帶位置參數(shù)的函數(shù),判斷是否是素?cái)?shù)。。3.4.2位置參數(shù)3.4.3默認(rèn)參數(shù)[例3-7]在定義函數(shù)時(shí),設(shè)置參數(shù)的默認(rèn)值。[例3-8]計(jì)算橢球的表面積和體積,調(diào)用時(shí)修改了默認(rèn)參數(shù)的值。3.4.3默認(rèn)參數(shù)3.4.3默認(rèn)參數(shù)注意:默認(rèn)參數(shù)一般要放到參數(shù)列表的最后修改3.4.2參數(shù)設(shè)置默認(rèn)值重要說明:默認(rèn)值只計(jì)算一次。當(dāng)默認(rèn)值是可變對(duì)象(如列表、字典或大多數(shù)類的實(shí)例)時(shí),這會(huì)有所不同。以下函數(shù)將在后續(xù)調(diào)用中累積傳遞給它的參數(shù)值,默認(rèn)值在定義范圍內(nèi)的函數(shù)定義點(diǎn)進(jìn)行計(jì)算,如下例:請(qǐng)分析方法一和方法二的不同之處。[例3-9]默認(rèn)值在定義范圍內(nèi)的函數(shù)定義點(diǎn)進(jìn)行計(jì)算實(shí)例。方法一方法二3.4.3默認(rèn)參數(shù)[例3-10]默認(rèn)值對(duì)后續(xù)調(diào)用的影響實(shí)例。如果不希望在后續(xù)調(diào)用之間共享默認(rèn)值,則可以這樣編寫函數(shù):如果希望函數(shù)調(diào)用時(shí),不用固定參數(shù)的順序,可以在調(diào)用的同時(shí)指定形參和實(shí)參,這些參數(shù)又稱為關(guān)鍵字參數(shù)。使用關(guān)鍵字參數(shù)是指,在函數(shù)調(diào)用時(shí),可以明確的為形參指定實(shí)參,可以不用固定參數(shù)的順序。3.4.4關(guān)鍵字參數(shù)[例3-11]使用kwarg=value形式的關(guān)鍵字實(shí)例。(見下頁)3.4.5可變參數(shù)在Python函數(shù)中,還有一種可變參數(shù),即傳入函數(shù)的參數(shù)個(gè)數(shù)是可變的??勺儏?shù)可以分為*args和**kwargs兩種形式,若函數(shù)定義時(shí),二者同時(shí)存在,一定需要將*args放在**kwargs之前??勺儏?shù)被組成元組在函數(shù)定義時(shí),在形參args前加一個(gè)*號(hào),則*args參數(shù)收集所有未匹配的位置參數(shù)組成一個(gè)元組(tuple)對(duì)象,形參args指向此元組(tuple)對(duì)象。在函數(shù)調(diào)用時(shí),*args參數(shù)用于解包元組(tuple)對(duì)象的每個(gè)元素,作為一個(gè)一個(gè)的位置參數(shù)傳入到函數(shù)中。[例3-13]可變長(zhǎng)度參數(shù)實(shí)例。3.4.5可變參數(shù)3.4.5可變參數(shù)2. 可變參數(shù)組成字典在函數(shù)定義時(shí),在形參kwargs前加兩個(gè)**號(hào),則**kwargs參數(shù)收集所有未匹配的位置參數(shù)組成一個(gè)字典(dict)對(duì)象,形參kwargs指向此字典(dict)對(duì)象。在函數(shù)調(diào)用時(shí),*kwargs參數(shù)用于解包字典(dict)對(duì)象的每個(gè)元素,作為一個(gè)一個(gè)的關(guān)鍵字參數(shù)傳入到函數(shù)中。[例3-13]可變參數(shù)實(shí)例,傳入的參數(shù)組裝為一個(gè)字典。3.5匿名函數(shù)053.5.匿名函數(shù)Python允許使用lambda語句創(chuàng)建匿名函數(shù)(無具體的名稱)。lambda函數(shù)的語法:lambda[arg1[,arg2,.....argn]]:expression注:lambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個(gè)表達(dá)式,
匿名函數(shù)不能直接調(diào)用print,因?yàn)閘ambda需要一個(gè)表達(dá)式。[例3-14]匿名函數(shù)實(shí)例。[例3-15]匿名函數(shù)實(shí)例。3.6遞歸函數(shù)063.6遞歸函數(shù)如果一個(gè)函數(shù)在執(zhí)行過程中,又調(diào)用了函數(shù)本身,則稱為遞歸函數(shù)。注意:遞歸必須有一個(gè)明確的結(jié)束條件;每次進(jìn)入更深一層遞歸時(shí),問題規(guī)模相比上次遞歸都應(yīng)有所減少;函數(shù)遞歸的深度不能太大,否則容易引起內(nèi)存崩潰。[例3-16]用遞歸函數(shù)實(shí)現(xiàn)返回Fibonacci序列前n個(gè)數(shù)。3.7本章實(shí)踐例題本章實(shí)踐例題[例3-17]無參函數(shù)和有參函數(shù)的定義實(shí)例。本章實(shí)踐例題[例3-18]函數(shù)的定義與調(diào)用實(shí)例。本章實(shí)踐例題[例3-19]定義計(jì)算平面上兩點(diǎn)間距離的函數(shù)distance,計(jì)算三角形周長(zhǎng),點(diǎn)在橫坐標(biāo)和縱坐標(biāo)上的位置分別用x和y表示。本章實(shí)踐例題[例3-20]輸入一個(gè)數(shù)字,用遞歸函數(shù)求出該數(shù)字的各位數(shù)之和。本章實(shí)踐例題[例3-21]設(shè)置函數(shù)參數(shù)值的實(shí)例。本章實(shí)踐例題[例3-22]可變參數(shù)的函數(shù)實(shí)例。本章實(shí)踐例題[例3-23]鍵盤輸入n個(gè)數(shù)組成列表(輸入-1結(jié)束),編寫函數(shù)calc(輸入?yún)?shù)為該列表),求該列表的總和及均值。本章實(shí)踐例題[例3-24]使用函數(shù),判斷輸入字符串是否為回文串。本章實(shí)踐例題[例3-25]使用函數(shù),根據(jù)中獎(jiǎng)概率模擬中獎(jiǎng)次數(shù)。小結(jié)本章主要介紹了Python語言中的函數(shù),并結(jié)合實(shí)例講解了函數(shù)的定義方法,函數(shù)中參數(shù)的傳遞方法,函數(shù)中參數(shù)的設(shè)置,以及匿名函數(shù)、遞歸函數(shù)等內(nèi)容。需重點(diǎn)掌握的內(nèi)容包括:函數(shù)的定義方法、函數(shù)參數(shù)的設(shè)置和匿名函數(shù)的使用。小結(jié)本章習(xí)題1.定義函數(shù)triangle(a,b,c),可以根據(jù)用戶輸入的三邊,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中原區(qū)九年級(jí)考試試卷及答案
- 電力監(jiān)管理論知識(shí)考試題及答案
- 一中高二周考試卷及答案
- 安全員考考試題型及答案
- Excel與Photoshop應(yīng)用知識(shí)及電商數(shù)據(jù)采集試題附答案
- 2025年中職生技能大賽理論試題及答案
- 2025年病歷書寫規(guī)范版考試試題及答案
- 跨部門協(xié)同服務(wù)模式-洞察與解讀
- 長(zhǎng)沙事業(yè)單位招聘考試綜合類職業(yè)能力傾向測(cè)驗(yàn)真題模擬試卷
- 2025年4月北京門頭溝龍泉鎮(zhèn)城市協(xié)管員招聘1人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(新)
- 2025-2026學(xué)年接力版(2024)小學(xué)英語四年級(jí)上冊(cè)(全冊(cè))教學(xué)設(shè)計(jì)(附目錄)
- 婦女常見疾病防治講座
- 廠房屋頂分布式光伏項(xiàng)目可行性研究報(bào)告
- 供貨進(jìn)度保證措施方案
- 私人財(cái)產(chǎn)轉(zhuǎn)移協(xié)議書范本
- DB3301∕T 0396-2023 大型商業(yè)綜合體消防安全管理規(guī)范
- 食品生產(chǎn)許可培訓(xùn)課件
- 2025年長(zhǎng)沙市中考道德與法治試卷真題(含答案解析)
- 2025 二年級(jí)上冊(cè)《田家四季歌》教學(xué)課件
- 面部整骨培訓(xùn)課件
- 橈骨骨折課件
評(píng)論
0/150
提交評(píng)論