《Python語言程序設(shè)計(jì)》課件 項(xiàng)目4:函數(shù)的應(yīng)用-模擬探月工程_第1頁
《Python語言程序設(shè)計(jì)》課件 項(xiàng)目4:函數(shù)的應(yīng)用-模擬探月工程_第2頁
《Python語言程序設(shè)計(jì)》課件 項(xiàng)目4:函數(shù)的應(yīng)用-模擬探月工程_第3頁
《Python語言程序設(shè)計(jì)》課件 項(xiàng)目4:函數(shù)的應(yīng)用-模擬探月工程_第4頁
《Python語言程序設(shè)計(jì)》課件 項(xiàng)目4:函數(shù)的應(yīng)用-模擬探月工程_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論