版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
函數(shù)的應(yīng)用模擬探月工程Python函數(shù)探?模擬實(shí)踐應(yīng)?項(xiàng)目四《Python語言程序設(shè)計(jì)》知識與能??標(biāo)知識?標(biāo)能??標(biāo)理解Python函數(shù)的定義與作?掌握?定義函數(shù)的定義與調(diào)??法理解函數(shù)的變量作?域掌握多種函數(shù)參數(shù)類型理解函數(shù)的返回值理解?定義模塊與包理解遞歸函數(shù)與匿名函數(shù)掌握不同類型參數(shù)的使??法掌握?定義模塊的創(chuàng)建與導(dǎo)??法掌握包的創(chuàng)建?法掌握遞歸函數(shù)與匿名函數(shù)的使??法2/17Python函數(shù)基礎(chǔ)概述代碼封裝將執(zhí)?特定功能的語句提取出來,封裝為函數(shù),避免代碼重復(fù)重復(fù)調(diào)?可以在程序中多次調(diào)?函數(shù)執(zhí)?相同功能,?需重復(fù)粘貼代碼結(jié)構(gòu)清晰使?函數(shù)可使程序結(jié)構(gòu)更加清晰,邏輯分明,便于理解易于維護(hù)函數(shù)化的程序結(jié)構(gòu)更容易維護(hù),修改函數(shù)即可影響所有調(diào)?處在Python項(xiàng)?中,很多基本功能都是通過函數(shù)實(shí)現(xiàn)的函數(shù)是什么?函數(shù)是Python程序的基本構(gòu)成元素之?,通過調(diào)?函數(shù)可以實(shí)現(xiàn)軟件程序的特定功能。3/17內(nèi)置函數(shù)與?定義函數(shù)內(nèi)置函數(shù)Python解釋器?帶的函數(shù)可直接使?,不需要導(dǎo)?某個(gè)模塊隨著解釋器的啟動(dòng)??效是解釋器的?部分執(zhí)?效率通常?于標(biāo)準(zhǔn)庫函數(shù)#直接調(diào)?內(nèi)置函數(shù)print("Hello,Moon!")name=input("Enteryourname:")numbers=[1,2,3,4,5]max_num=max(numbers)?定義函數(shù)需要??定義(聲明)后才能調(diào)?需要指定函數(shù)名稱并編寫功能語句集使?關(guān)鍵字def定義函數(shù)調(diào)?時(shí)需要按照定義形式傳遞必需的參數(shù)需要先定義,后調(diào)?#先定義?定義函數(shù)def
calculate_orbit(distance,velocity):orbit_time=2*3.14*distance/velocity
returnorbit_time#然后調(diào)??定義函數(shù)time=calculate_orbit(384400,1000)4/17?定義函數(shù)的語法結(jié)構(gòu)函數(shù)語法?例def
calculate_lunar_distance(distance,speed):
"""
計(jì)算?球探測器到達(dá)?球表?所需的時(shí)間
參數(shù):distance:距離,單位為千?speed:速度,單位為千?/?時(shí)
返回:
到達(dá)時(shí)間,單位為?時(shí)"""
travel_time=distance/speed
#檢查速度是否為0ifspeed==0:returnNone
#計(jì)算并返回結(jié)果
returntravel_time注意事項(xiàng)Python函數(shù)定義?較靈活,不需要定義返回值類型和參數(shù)類型函數(shù)體內(nèi)的語句必須保持相同的縮進(jìn)級別函數(shù)可以有多個(gè)返回值,也可以沒有返回值def關(guān)鍵字使?關(guān)鍵字def定義函數(shù),后接函數(shù)名、?括號和冒號函數(shù)名函數(shù)名為標(biāo)識符,遵循Python命名規(guī)范參數(shù)列表傳?的參數(shù)和?變量必須放在?括號?,可定義多個(gè)參數(shù),?逗號分隔?檔字符串函數(shù)的第??語句可選擇性地使??檔字符串,?于存放函數(shù)說明函數(shù)體函數(shù)體以冒號表?開始,并且縮進(jìn)。語句數(shù)量不限,保持縮進(jìn)?致,縮進(jìn)結(jié)束表?函數(shù)結(jié)束返回值"return<返回值>"語句表?結(jié)束函數(shù),選擇性地返回值給調(diào)?者。?返回值則返回None。多個(gè)返回值以逗號分隔,相當(dāng)于返回?個(gè)元組5/17函數(shù)的調(diào)??法調(diào)?函數(shù)基本概念調(diào)?函數(shù)就是使?、執(zhí)?函數(shù),實(shí)現(xiàn)函數(shù)定義的功能已定義的函數(shù)可以被另?個(gè)函數(shù)調(diào)?,也可以直接通過命令提?符執(zhí)?調(diào)??定義函數(shù)與調(diào)?內(nèi)置函數(shù)的?法相同,但必須先聲明再調(diào)?內(nèi)置函數(shù)調(diào)?內(nèi)置函數(shù)是Python已提供的函數(shù),可直接調(diào)??需聲明,直接使?#調(diào)?內(nèi)置函數(shù)print("Hello,Moon!")result=len(["rover","lander","orbiter"])?定義函數(shù)調(diào)??定義函數(shù)需要先聲明再調(diào)?聲明后的調(diào)??式與內(nèi)置函數(shù)相同#先聲明函數(shù)def
calculate_lunar_distance():
return384400#再調(diào)?函數(shù)distance=calculate_lunar_distance()函數(shù)調(diào)?語法function_name(parameter1,parameter2,...)使?函數(shù)名使??括號傳參多參數(shù)?逗號分隔6/17函數(shù)參數(shù)類型(一)形參與實(shí)參?形參:定義函數(shù)時(shí),函數(shù)名后括號內(nèi)的變量,表?函數(shù)完成?作所需的信息?實(shí)參:調(diào)?函數(shù)時(shí)傳遞給函數(shù)的信息,在被調(diào)?處給出的對應(yīng)參數(shù)必需參數(shù)(位置參數(shù))按照位置順序傳遞給形參參數(shù)數(shù)量必須與聲明時(shí)?致未傳?對應(yīng)實(shí)參會導(dǎo)致語法錯(cuò)誤def
info(name,age):
print(f"姓名:{name},年齡:{age}")info("?明",18)#正確調(diào)?info("?明")#錯(cuò)誤:缺少參數(shù)
</>默認(rèn)值參數(shù)使?賦值運(yùn)算符"="設(shè)置參數(shù)默認(rèn)值未傳?參數(shù)時(shí)使?默認(rèn)值簡化函數(shù)調(diào)?def
greeting(name,msg="你好"):
print(f"{msg},{name}!")greeting("?紅")#使?默認(rèn)消息greeting("?藍(lán)","歡迎")#?定義消息
</>參數(shù)傳遞基本原理?數(shù)據(jù)從主調(diào)函數(shù)傳遞給被調(diào)函數(shù)?數(shù)據(jù)從被調(diào)函數(shù)返回主調(diào)函數(shù)?實(shí)參將值傳遞給對應(yīng)位置的形參
主調(diào)函數(shù)
被調(diào)函數(shù)實(shí)參傳遞返回結(jié)果7/17函數(shù)參數(shù)類型(二)關(guān)鍵字參數(shù)#關(guān)鍵字參數(shù)?例definfo(name,age,city):print(f"姓名:{name},年齡:{age},城市:{city}")#調(diào)?函數(shù)時(shí)使?關(guān)鍵字參數(shù)info(age=25,name="張三",city="北京")#輸出:姓名:張三,年齡:25,城市:北京可變?度參數(shù)#可變?度參數(shù)?例deflunar_mission(mission_name,*args,**kwargs):print(f"任務(wù)名稱:{mission_name}")print(f"位置參數(shù):{args}")print(f"關(guān)鍵字參數(shù):{kwargs}")#調(diào)?帶有可變?度參數(shù)的函數(shù)lunar_mission("嫦娥五號","采樣","返回",發(fā)射?期="2020-11-23",著陸點(diǎn)="?球正?")通過"鍵=值"形式按名稱指定參數(shù)值允許函數(shù)調(diào)?參數(shù)的順序與聲明時(shí)不?致Python解釋器會?參數(shù)名匹配參數(shù)值*args添加了星號"*"的參數(shù)保存所有未命名的參數(shù)會被當(dāng)作元組來處理**kwargs添加了雙星號"**"的參數(shù)保存所有關(guān)鍵字參數(shù)會被當(dāng)作字典來處理若沒有指定參數(shù),可變?度參數(shù)就是?個(gè)空元組或空字典8/17函數(shù)返回值函數(shù)返回的值被稱為返回值。被調(diào)函數(shù)可以使?return語句將值返回給主調(diào)函數(shù),執(zhí)?完return語句后程序返回主調(diào)函數(shù)。函數(shù)的返回值解決了函數(shù)向外部輸出信息的問題。單?返回值函數(shù)返回?個(gè)值,使?return語句直接返回結(jié)果。defcalculate_area(radius):"""計(jì)算圓的?積"""area=3.14*radius*radius
returnarea#調(diào)?函數(shù)result=calculate_area(5)print(result)#輸出:78.5多返回值函數(shù)可以返回多個(gè)值,多個(gè)返回值將構(gòu)成?個(gè)元組。defcalculate_circle(radius):"""計(jì)算圓的?積和周?"""area=3.14*radius*radiusperimeter=2*3.14*radius
returnarea,perimeter#調(diào)?函數(shù)a,p=calculate_circle(5)print(a,p)#輸出:78.531.4?返回值如果函數(shù)定義中沒有return語句,系統(tǒng)?動(dòng)插?returnNone語句,返回特殊值None。defgreet(name):"""打印問候語"""print(f"你好,{name}!")#沒有return語句,?動(dòng)返回None#調(diào)?函數(shù)result=greet("?明")print(result)#輸出:None注意:調(diào)?函數(shù)時(shí)的參數(shù)傳遞實(shí)現(xiàn)了函數(shù)外部向函數(shù)內(nèi)部輸?數(shù)據(jù),?函數(shù)的返回值則解決了函數(shù)向外部輸出信息的問題。9/17變量作?域概述變量的作?域是指變量的作?范圍,它決定哪?部分程序可以訪問特定的變量。Python中有以下四種作?域:內(nèi)置作?域(Built-in)Python預(yù)先定義的作?域,包含解釋器內(nèi)置的函數(shù)和變量。全局作?域(Global)能作?于函數(shù)內(nèi)外的變量,既可以在各函數(shù)的外部使?,也可以在各函數(shù)的內(nèi)部使?。嵌套作?域(Enclosing)?般是指?個(gè)函數(shù)嵌套另?個(gè)函數(shù)的情況,外層函數(shù)的變量的作?范圍稱為嵌套作?域。局部作?域(Local)定義函數(shù)內(nèi)部的變量擁有?個(gè)局部作?域,表?變量只能在被聲明的函數(shù)內(nèi)部訪問。10/17局部變量與全局變量局部變量定義在函數(shù)內(nèi)部的變量,僅在被聲明的函數(shù)內(nèi)部可訪問同?函數(shù)在不同時(shí)間運(yùn)?時(shí),其作?域是相互獨(dú)?的不同函數(shù)中同名的局部變量相互不影響函數(shù)執(zhí)?結(jié)束后,局部變量被銷毀deffunction():
x=10#局部變量print(x)#可以訪問function()print(x)#錯(cuò)誤!函數(shù)外?法訪問11/17global與nonlocal關(guān)鍵字global關(guān)鍵字不使?global關(guān)鍵字時(shí),函數(shù)內(nèi)部會創(chuàng)建?個(gè)同名的局部變量謹(jǐn)慎使?global關(guān)鍵字,過度使?會導(dǎo)致代碼可維護(hù)性降低nonlocal關(guān)鍵字nonlocal使內(nèi)部函數(shù)可以修改外部函數(shù)中定義的變量常?于閉包和裝飾器等?級Python編程技巧中在Python中,函數(shù)內(nèi)部默認(rèn)?法操作函數(shù)外部的全局變量使?global關(guān)鍵字可以在函數(shù)內(nèi)部聲明并操作全局變量count=0#全局變量def
update_counter():
global
count
#聲明全局變量
count+=1
print("計(jì)數(shù)器值:",count)update_counter()#輸出:計(jì)數(shù)器值:1update_counter()#輸出:計(jì)數(shù)器值:2在嵌套函數(shù)中,可以使?nonlocal關(guān)鍵字修改嵌套作?域中的變量主要應(yīng)?于函數(shù)嵌套的場景def
outer_function():
message="探測器狀態(tài)"
#外層函數(shù)的變量
def
inner_function():
nonlocal
message
#聲明nonlocal變量
message="探測器已著陸"
print(message)
print("調(diào)?前:",message)
inner_function()
print("調(diào)?后:",message)12/17?定義模塊的創(chuàng)建什么是模塊模塊的優(yōu)勢如何創(chuàng)建模塊模塊?例moon_utils.py#探??程相關(guān)的功能模塊def
calculate_distance(start_point,end_point):
#計(jì)算兩點(diǎn)間距離的函數(shù)x1,y1=start_pointx2,y2=end_pointdistance=((x2-x1)**2+(y2-y1)**2)**0.5
returndistancedef
calculate_fuel(distance,weight):
#根據(jù)距離和重量計(jì)算燃料消耗fuel_needed=distance*weight*0.1
returnfuel_needed#模塊中的變量gravity_moon=1.62#?球重?加速度m/s2#直接可執(zhí)?的代碼if__name__=="__main__":
print("?球探測?具模塊已啟動(dòng)")?模塊是?個(gè)以.py為擴(kuò)展名的Python?件?包含Python對象定義和Python語句?可以定義函數(shù)、類和變量?以?件形式組織程序,?便管理?多個(gè)?件存儲程序,結(jié)構(gòu)更清晰?可作為腳本執(zhí)?,也可導(dǎo)?其他模塊?實(shí)現(xiàn)功能復(fù)?,提?開發(fā)效率1.創(chuàng)建.py?件(?件名即為模塊名)2.在?件中編寫Python代碼(函數(shù)、類、變量等)3.保存?件,即可作為模塊使?moon_utils.py
函數(shù)
變量
可執(zhí)?代碼13/17模塊的導(dǎo)?與使?導(dǎo)?整個(gè)模塊使?import語句可以導(dǎo)?整個(gè)模塊,使模塊中的所有函數(shù)和變量可?。import
module_name#?例import
mathresult=math.sqrt(16)導(dǎo)?特定函數(shù)使?from-import語句可以只導(dǎo)?模塊中的特定函數(shù)。from
module_name
import
function_name#?例from
math
import
sqrtresult=sqrt(16)導(dǎo)?多個(gè)函數(shù)可以從?個(gè)模塊中導(dǎo)?多個(gè)指定的函數(shù),函數(shù)名之間使?逗號隔開。from
module_name
import
function1,function2#?例from
math
import
sqrt,piarea=pi*sqrt(16)使?別名使?關(guān)鍵字as可以為導(dǎo)?的模塊或函數(shù)指定簡短的別名。import
module_name
asmn#?例import
numpy
asnpfrom
matplotlib.pyplot
import
pyplot
asplt14/17Python包的創(chuàng)建與應(yīng)?包的概念分層次的?件?錄結(jié)構(gòu)由模塊和?包組成的Python應(yīng)?環(huán)境簡單理解:包就是?件夾,是管理Python模塊命名空間的形式解決了模塊命名沖突問題包的創(chuàng)建步驟1.在指定?錄中創(chuàng)建與包名對應(yīng)的?錄2.在包?錄下創(chuàng)建
__init__.py
?件該?件?于標(biāo)識?錄是?個(gè)包,可以為空或包含初始化代碼3.在包?錄下創(chuàng)建其他Python模塊?件或?包包的特點(diǎn)可以包含?限層次的?包結(jié)構(gòu)只要頂層包名不沖突,模塊就不會發(fā)?沖突便于?型項(xiàng)?的模塊管理與維護(hù)包結(jié)構(gòu)?例lunar_mission(頂層包)__init__.pynavigation(?包)__init__.pytrajectory.pylanding.pysensors(?包)__init__.pycamera.pythermal(嵌套?包)__init__.pytemperature.pymain.py導(dǎo)??例:#導(dǎo)?包importlunar_mission#導(dǎo)??包importlunar_mission.navigation#導(dǎo)?特定模塊fromlunar_mission.sensors.thermalimporttemperature15/17實(shí)踐應(yīng)?——模擬探??程項(xiàng)?結(jié)構(gòu)lunar_mission__
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地理八下考試試題及答案
- 未來五年早教托育企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報(bào)告
- 未來五年消費(fèi)電子外盒保護(hù)膜企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報(bào)告
- 三臺縣2025年教體系統(tǒng)公開考調(diào)事業(yè)單位工作人員的參考題庫附答案
- 北京中國石油大學(xué)教育基金會招聘2人備考題庫必考題
- 四川鐵道職業(yè)學(xué)院2025年公開選調(diào)工作人員備考題庫附答案
- 招2人!湟源縣人民法院招聘備考題庫附答案
- 江西省供銷合作社聯(lián)合社公開招聘江西省金合控股集團(tuán)有限公司副總經(jīng)理及財(cái)務(wù)總監(jiān)專題參考題庫附答案
- 福建漳州市2026屆國企類選優(yōu)生招聘(第三批)開考崗位備考題庫附答案
- 西寧市城東區(qū)招聘編外人員參考題庫附答案
- YY/T 1973-2025醫(yī)用下肢外骨骼機(jī)器人
- 解讀-2025年版《普通高中課程標(biāo)準(zhǔn)》化學(xué)解讀
- 食堂餐廳維修項(xiàng)目方案(3篇)
- 醫(yī)用手術(shù)器械講解
- 腫瘤晚期呼吸困難治療
- 車間電纜整改方案模板(3篇)
- 徐州村務(wù)管理辦法
- 冰芯氣泡古大氣重建-洞察及研究
- 廣東省惠州市2026屆高三上學(xué)期第一次調(diào)研考試 歷史 含答案
- DB50∕T 1604-2024 地質(zhì)災(zāi)害防治邊坡工程結(jié)構(gòu)可靠性設(shè)計(jì)規(guī)范
- 中國電氣裝備資產(chǎn)管理有限公司招聘筆試題庫2025
評論
0/150
提交評論