




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Python程序設計第5章Python自定義函數學習目標識記函數/lambda表達式語法理解函數要素掌握函數的使用知識目標能夠根據需求正確編寫函數能夠使用map()等高級函數簡化代碼能力目標專業精神與責任開源文化與版權意識情感態度與價值觀函數定義與調用01020403函數返回值與參數變量作用域高階函數目
錄函數定義與調用01020403函數返回值與參數變量作用域高階函數目
錄函數概述函數定義函數調用函數:封裝了特定任務實現的代碼塊內置函數標準庫函數第三方庫函數自定義函數函數代碼非調用不執行減少重復代碼,避免代碼冗余提高代碼的可讀性和可維護性代碼更加模塊化,便于組織和維護5.1函數概述985.2函數定義與調用99def函數名([參數列表]):#函數體[return返回值]def:定義函數的關鍵字函數名:遵循標識符的命名規則([參數列表]):代表函數必須從外部得到的數據,不需要外部數據則小括號內留空冒號:表示下一行開始進入函數體函數體:實現目標功能的語句塊,需要縮進return:返回語句,可以帶返回值,也可以不帶函數模擬切水果機器(定義部分)5.2函數定義與調用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpieces示例5-1def函數名([參數列表]):#函數體[return返回值]沒有返回值的函數直接調用有返回值的函數可將返回值賦值給其他變量5.2函數定義與調用100函數名([實際參數])變量=函數名([實際參數])函數模擬切水果機器(調用部分)5.2函數定義與調用100deffruit_cutter(fruit):print(f'開始切{fruit}')pieces=list(fruit)returnpiecesfruit_pieces=fruit_cutter('apple')print(fruit_pieces)#['a','p','p','l','e']示例5-1函數定義與調用01020403函數返回值與參數變量作用域高階函數目
錄函數返回值與參數020403變量作用域高階函數目
錄函數定義與調用01函數返回值函數參數返回值是函數內部需要傳遞到函數外部的數據計算結果:面積計算、利息計算、三角函數狀態信息:數據是否保存成功、數據是否合法數據加工結果:排序結果、數據檢索結果返回值使用return語句返回給調用者Python函數返回值形式None單一值多個值5.3函數的返回值100返回None值沒有return語句,函數體執行完畢返回時遇到return語句但return之后沒有數據時5.3函數的返回值100defsay_hello(name):
print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#輸出結果:None示例5-2返回None值沒有return語句,函數體執行完畢返回時遇到return語句但return之后沒有數據時5.3函數的返回值101defsay_hello(name):print(f'Hello,{name}!')ret_val=say_hello('張三')print(ret_val)#打印結果:None示例5-2defsave(name,age):ifnameisNoneorname=='':print(f'名字({name})不合法')returnifageisNoneorage<0:print(f'年齡({age}不合法)')returnprint('保存完畢!')ret_val=save('',18)print(ret_val)#打印結果:None示例5-3返回單一值(一個return)5.3函數的返回值101defsummary(a,b):returna+bret_val=summary(5,10)print(ret_val)示例5-4返回單一值(多個return)5.3函數的返回值101defto_level(score):ifscore>=90:return'優'elifscore>=80:return'良'elifscore>=70:return'中'elifscore>=60:return'合格'else:return'不合格'示例5-5調用語句:ret_val=to_level(85)print(ret_val)返回多個值:多個數據被函數組合成元組返回5.3函數的返回值101deftop_1(data_list):max_val=max(data_list)idx=data_list.index(max_val)returnmax_val,idxret_val=top_1([1,19,4,-6,15,7])print(ret_val)#打印結果:(19,1)ret1,ret2=top_1([1,19,4,-6,15,7])print(ret1,ret2)#打印結果:191示例5-6參數傳遞方式決定函數如何接收外部數據位置參數默認參數關鍵字參數變長參數不可變實參和可變實參5.4參數傳遞103位置參數:調用函數時,必須按照函數定義中形式參數的順序,提供實際參數,不能隨意改變5.4.1位置參數103defrectangular_perimeter(height,width):return(height+width)*2ret=rectangular_perimeter(3,2)print(ret)打印結果:10示例5-7默認參數:函數定義中可以為某些形參提供默認值,調用函數時如果沒有為這些參數提供實參,函數將自動傳入定義中指定的默認值5.4.2默認參數104defsay_hello(name='Python'):print(f'Hello,{name}!')say_hello() #打印結果:Hello,Python!say_hello('張三') #打印結果:Hello,張三!示例5-8關鍵字參數:調用函數時通過“形參名=值”的語法指定參數的值,不必依賴定義中形參的位置順序5.4.3關鍵字參數104definfo(name,age,career):print(f'{name}今年{age}歲,職業為{career}')#打印結果:張三今年28歲,職業為飛行員info(name='張三',career='飛行員',age=28)示例5-9變長參數:允許函數接收不定數量的實參*形參名:函數內部將該參數做元組使用調用時依次傳入實參,逗號隔開5.4.4變長參數104definfo(*person):print(f'{person[0]}今年{person[1]}歲,職業為{person[2]}')#傳遞的實參:('張三',28,'飛行員')info('張三',28,'飛行員')示例5-10變長參數:允許函數接收不定數量的實參**形參名:函數內部將該參數做字典使用調用時使用關鍵字參數傳參5.4.4變長參數105definfo(**person):forkinperson:print(k,person[k])#傳遞的實參:{name:'張三',age:28,career:'飛行員'}info(name='張三',age=28,career='飛行員')示例5-11變長參數使用要點從函數定義中的參數列表看不出具體參數實現方和調用方應協商好參數的具體定義必要情況下提供相應的接口描述5.4.4變長參數105不可變實參:函數內部對形參的修改不會影響實參5.4.5不可變實參與可變實參105defchange_value(a,b):a=bname='張三'change_value(name,'李四')print(name)#打印結果:張三示例5-12可變實參:函數內部對形參的修改會反映到實參5.4.5不可變實參與可變實參105defchange_value(a,b):a[0]=binfo=['張三',28,'飛行員']change_value(info,'李四')print(info)#打印結果:['李四',28,'飛行員']示例5-13函數定義與調用01020403函數返回值與參數變量作用域高階函數目
錄變量作用域0304高階函數目
錄函數定義與調用0102函數返回值與參數全局變量局部變量global關鍵字變量作用域:變量能夠被使用的范圍全局變量局部變量5.5變量作用域108全局變量:定義在源文件中,處于函數、類定義之外的變量在整個程序運行期間都存在程序的任何位置都可以讀取和修改全局變量5.5.1全局變量108a=10 #定義全局變量ab=5 #定義全局變量bdefsummary(x,y):returnx+yprint(summary(a,b))#將a和b用作實參b+=1#修改變量b示例5-14局部變量:函數內部定義的變量函數被調用時創建,函數執行期間存在只能在該函數內部使用5.5.2局部變量108defdemo():x=2#定義局部變量x
y=4#定義局部變量yprint(x,y)demo()
#打印結果:24print(x)
#報錯:NameError:name'x'isnotdefined示例5-15對于一個變量,當函數內部僅讀取它時,認為該變量是全局變量5.5.3global關鍵字109a=10#定義全局變量adefdemo1():b=a+1#僅讀取a的值,在全局域中尋找aprint(a,b)demo1()#打印結果:1011示例5-16對于一個變量,當函數內部對它賦值時,認為該變量是局部變量5.5.3global關鍵字109a=10#定義全局變量adefdemo2():a=20#定義局部變量a,和全局變量a同名,函數內部將覆蓋全局變量ademo2()print(a)#打印結果:10示例5-17對于一個變量,當函數內部對它賦值時,認為該變量是局部變量5.5.3global關鍵字109a=10#定義全局變量adefdemo3():print(a)a=30#a為局部變量,但上一行先使用了ademo3()#報錯示例5-17在函數內部修改全局變量的值,需在函數內部用global先行聲明5.5.3global關鍵字109a=10#定義全局變量adefdemo4():globala#聲明函數內部使用全局變量aa=20demo4()print(a)#打印結果:20示例5-18global全局變量名函數定義與調用01020403函數返回值與參數變量作用域高階函數目
錄高階函數04目
錄函數定義與調用0102函數返回值與參數03變量作用域lambda表達式map()和filter()閉包高階函數:能夠接受其他函數作為參數,或者返回一個函數作為結果的函數5.6高階函數110lambda表達式:一種簡潔的函數定義方式,定義一個簡單的、單表達式的匿名函數參數列表:可以是任意數量的參數,多個參數之間用逗號隔開表達式:通常是一個較為簡單的單一表達式,其值即為函數的返回值5.6.1lambda表達式lambda參數列表:表達式將lambda表達式定義的匿名函數存放在變量中,以變量名作為函數名調用5.6.1lambda表達式110f=lambdax,y,z:x+y+zresult=f(1,3,5)print(result)#打印結果:9示例5-19變量名=lambda參數列表:表達式使用lambda表達式對字典鍵值對排序5.6.1lambda表達式110emotions={0:'anger',-1:'sad',1:'happiness'}result=sorted(emotions.items(),key=lambdax:x[0])print(result)#打印:[(-1,'sad'),(0,'anger'),(1,'happiness')]示例5-20map():接受一個函數和N個(N≥1)可迭代對象作為參數,函數應用于可迭代對象的每個元素,并返回一個迭代器,其中包含應用函數后的結果通常將這個迭代器轉換成列表等數據結構后再使用5.6.2map()與filter()111map(函數名,iterable1[,iterable2,...,iterableN]使用map()將列表所有字符串轉換為小寫5.6.2map()與filter()111fruits=['Apple','Banana','Cherry']result=map(str.lower,fruits)print(list(result))#打印結果:['apple','banana','cherry']示例5-21map()處理多個可迭代對象5.6.2map()與filter()111defmultiply(x,y):returnx*ylist1=[1,2,3,4,5]list2=[6,7,8,9,10]result=map(multiply,list1,list2)print(list(result))#打印結果:[6,14,24,36,50]result=map(lambdax,y:x*y,list1,list2)print(list(result))#打印結果:[6,14,24,36,50]示例5-22filter():用于篩選數據,它接受一個函數和一個可迭代對象作為參數,函數對可迭代對象的每個元素進行測試,并返回一個迭代器,其中包含測試結果為True的元素通常將這個迭代器轉換成列表等數據結構后再使用5.6.2map()與filter()111filter(函數名,可迭代對象)filter()篩選偶數5.6.2map()與filter()112defis_e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稀土金屬壓延加工中的質量改進方法選擇與實施考核試卷
- 游樂設施施工中的安全文化建設考核試卷
- 木片在紙漿生產中的優化研究考核試卷
- 搪瓷制品的環保生產與廢棄物處理考核試卷
- 生態保護宣傳教育策略考核試卷
- 青浦區高三語文二模2021作文
- 電飯煲煮飯不熟應對考核試卷
- 浙江省J12共同體聯盟校初三語文中考模擬考試試卷(含答案)
- 家用電器具的材料腐蝕與防護考核試卷
- 管道工程行業熱點問題研究動向與趨勢預測考核試卷
- 2023技規選擇題庫(內附答案)
- 建筑物拆除場地清理垃圾外運施工方案
- 部門級安全培訓試題及答案可打印
- 康復輔具適配服務體系建設
- 歷史人教部編版八年級(上冊)第13課五四運動課件(23張)2024版新教材
- 2024-2025學年秋季第一學期1530安全教育記錄(第一、二、三周安全教育記錄表)
- 小學語文“跨學科學習任務群”內涵及解讀
- 地基基礎基樁靜荷載試驗考試題庫
- 湖北省孝感市孝南區2023-2024學年八年級下學期期中數學試題
- 大數據時代下傳統會計受到的沖擊與應對措施
- QC-T 911-2023 電源車標準規范
評論
0/150
提交評論