版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目7函數(shù)應(yīng)用了解函數(shù)的概念及作用01理解函數(shù)的模塊化設(shè)計(jì)思想02掌握函數(shù)的定義和調(diào)用方法03知識(shí)目標(biāo)理解return語(yǔ)句的作用和用法05理解函數(shù)的局部變量和全局變量06理解函數(shù)的遞歸和嵌套用法07理解函數(shù)的參數(shù)傳遞方式04能夠根據(jù)功能需求定義函數(shù)01能夠根據(jù)功能需求定義嵌套函數(shù)。02能夠運(yùn)用不同的方式傳遞函數(shù)參數(shù)03能力目標(biāo)能夠熟練運(yùn)用匿名函數(shù)04能夠熟練運(yùn)用遞歸函數(shù)解決復(fù)雜的問(wèn)題05能夠處理函數(shù)的異常和錯(cuò)誤06目錄簡(jiǎn)易計(jì)算器設(shè)計(jì)任務(wù)1汽車(chē)進(jìn)銷(xiāo)存管理系統(tǒng)設(shè)計(jì)任務(wù)2漢諾塔游戲設(shè)計(jì)任務(wù)3
任務(wù)1簡(jiǎn)易計(jì)算器設(shè)計(jì)任務(wù)提出01任務(wù)分析02知識(shí)準(zhǔn)備03任務(wù)實(shí)現(xiàn)04任務(wù)總結(jié)05任務(wù)提出Part.01提出任務(wù)運(yùn)用PyCharm開(kāi)發(fā)工具編寫(xiě)Python程序,設(shè)計(jì)一個(gè)簡(jiǎn)易的計(jì)算器,要求該計(jì)算器能實(shí)現(xiàn)兩個(gè)數(shù)字的加、減、乘、除(+、-、*、/)運(yùn)算等功能,其中每一種運(yùn)算都要求通過(guò)調(diào)用函數(shù)來(lái)完成。任務(wù)分析Part.02分析任務(wù)1.創(chuàng)建Python程序cal.py。2.設(shè)計(jì)命令行用戶(hù)界面,向用戶(hù)展示可用的運(yùn)算選項(xiàng)。3.為加、減、乘、除每一種運(yùn)算設(shè)計(jì)一個(gè)運(yùn)算函數(shù)。4.通過(guò)input函數(shù)接受用戶(hù)的輸入,調(diào)用相應(yīng)的函數(shù)進(jìn)行計(jì)算。5.運(yùn)行測(cè)試程序,通過(guò)驗(yàn)證輸出的計(jì)算結(jié)果來(lái)測(cè)試程序。該任務(wù)主要完成的是兩個(gè)數(shù)字的加、減、乘、除運(yùn)算,在運(yùn)行的過(guò)程中,根據(jù)用戶(hù)選擇的運(yùn)算來(lái)調(diào)用不同的函數(shù)完成計(jì)算,并給出計(jì)算結(jié)果。知識(shí)準(zhǔn)備Part.03函數(shù)概述01函數(shù)的定義02函數(shù)調(diào)用03知識(shí)準(zhǔn)備函數(shù)的嵌套定義04函數(shù)是組織好的、實(shí)現(xiàn)單一功能或相關(guān)聯(lián)功能,并可以重復(fù)使用的代碼,這段代碼已經(jīng)被提前編寫(xiě)好了,并且為其起一個(gè)“好聽(tīng)”的名字。在后續(xù)編寫(xiě)程序過(guò)程中,如果需要同樣的功能,直接通過(guò)起好的名字就可以調(diào)用這段代碼。函數(shù)概述Python中的函數(shù)可以分為內(nèi)置函數(shù)、標(biāo)準(zhǔn)庫(kù)函數(shù)、第三方庫(kù)函數(shù)和用戶(hù)自定義函數(shù)等幾種類(lèi)型。內(nèi)置函數(shù):Python語(yǔ)言自帶的函數(shù),可以直接在任何Python程序中使用,無(wú)需導(dǎo)入任何庫(kù)。標(biāo)準(zhǔn)庫(kù)函數(shù):Python的標(biāo)準(zhǔn)庫(kù)包含了許多模塊,這些模塊提供了大量的函數(shù)來(lái)處理各種常見(jiàn)任務(wù)。要使用這些函數(shù),需要首先導(dǎo)入相應(yīng)的模塊。例如,math模塊提供了各種數(shù)學(xué)函數(shù),如sqrt()、sin()、cos()等,OS模塊則提供了與操作系統(tǒng)交互的函數(shù),如exists()、listdir()等。函數(shù)概述第三方庫(kù)函數(shù):除了標(biāo)準(zhǔn)庫(kù)之外,還有許多第三方庫(kù)可供Python程序員使用。這些庫(kù)通常需要通過(guò)包管理器pip進(jìn)行安裝,然后才能在程序中使用。例如numpy庫(kù)提供了大量的數(shù)值計(jì)算函數(shù),pandas庫(kù)提供了數(shù)據(jù)處理和分析的函數(shù),matplotlib庫(kù)提供了繪圖函數(shù)等。用戶(hù)自定義函數(shù):除了使用內(nèi)置函數(shù)和庫(kù)函數(shù)之外,Python還允許程序員根據(jù)特定的需求定義自己的函數(shù)。函數(shù)概述函數(shù)的定義,也就是創(chuàng)建一個(gè)函數(shù),可以理解為創(chuàng)建一個(gè)具有某些用途的工具。Python中使用關(guān)鍵字def來(lái)定義函數(shù),其語(yǔ)法格式如下:函數(shù)的定義標(biāo)記函數(shù)的開(kāi)始函數(shù)的唯一標(biāo)識(shí)傳入函數(shù)中的數(shù)據(jù)可以包含一個(gè)或多個(gè)參數(shù)也可以為空標(biāo)記函數(shù)體的開(kāi)始實(shí)現(xiàn)函數(shù)功能的具體代碼返回函數(shù)的處理結(jié)果給調(diào)用方標(biāo)志著函數(shù)的結(jié)束,若函數(shù)沒(méi)有返回值,可以省略注意,在創(chuàng)建函數(shù)時(shí),即使函數(shù)不需要參數(shù),也必須保留一對(duì)空的“()”,否則Python解釋器將提示“invaildsyntax”錯(cuò)誤。另外,如果想定義一個(gè)沒(méi)有任何功能的空函數(shù),可以使用pass語(yǔ)句作為占位符。函數(shù)的定義#定義個(gè)空函數(shù),沒(méi)有實(shí)際意義defpass_fun_():pass函數(shù)在定義完成后不會(huì)立刻執(zhí)行,直到被程序調(diào)用時(shí)才會(huì)執(zhí)行。函數(shù)調(diào)用語(yǔ)法格式如下:函數(shù)調(diào)用例如:area()#無(wú)參函數(shù)area_modify(9,7)#有參函數(shù)函數(shù)名([參數(shù)列表])程序在調(diào)用函數(shù)的位置暫停執(zhí)行,將數(shù)據(jù)傳遞給函數(shù)參數(shù);執(zhí)行函數(shù)體中的語(yǔ)句;程序回到暫停處繼續(xù)執(zhí)行。函數(shù)調(diào)用過(guò)程area()area_modify(9,7)例如調(diào)用過(guò)程area_modify(9,7)defarea_modify(a,b):
s=a*b
print(s)①②③④注意:函數(shù)調(diào)用函數(shù)的使用必須遵循先定義,后調(diào)用原則沒(méi)有事先定義函數(shù),而直接引用函數(shù)名,就相當(dāng)于在引用一個(gè)不存在的變量名函數(shù)定義階段:只檢測(cè)函數(shù)體的語(yǔ)法,不執(zhí)行函數(shù)體代碼函數(shù)調(diào)用階段執(zhí)行代碼說(shuō)明:函數(shù)調(diào)用在函數(shù)定義階段括號(hào)內(nèi)沒(méi)有參數(shù)注意:定義無(wú)參,意味著調(diào)用時(shí)也無(wú)需傳入?yún)?shù)應(yīng)用:如果函數(shù)體的代碼邏輯不需要依賴(lài)外部傳入的值,必須定義無(wú)參函數(shù)(1)無(wú)參函數(shù)說(shuō)明:函數(shù)調(diào)用在函數(shù)定義階段括號(hào)內(nèi)有參數(shù),稱(chēng)為有參函數(shù)注意:定義時(shí)有參,意味著調(diào)用時(shí)也必須傳入?yún)?shù)應(yīng)用:如果函數(shù)體代碼邏輯需要依賴(lài)外部傳入的值,必須定義成有參函數(shù)(2)有參函數(shù)函數(shù)在定義時(shí)可以在其內(nèi)部嵌套定義另外一個(gè)函數(shù),嵌套的函數(shù)稱(chēng)為外層函數(shù),被嵌套的函數(shù)稱(chēng)為內(nèi)層函數(shù)。函數(shù)的嵌套定義defouter():print("這是外層函數(shù)")
definner():print("這是內(nèi)層函數(shù)")outer()例如:這是外層函數(shù)運(yùn)行結(jié)果如下:由運(yùn)行結(jié)果可知,程序沒(méi)有執(zhí)行內(nèi)層函數(shù)的打印語(yǔ)句,只輸出了外層函數(shù)的打印語(yǔ)句。這說(shuō)明內(nèi)層函數(shù)沒(méi)有被調(diào)用。函數(shù)的嵌套定義defouter():
print("這是外層函數(shù)")
definner():
print("這是內(nèi)層函數(shù)")
inner()#在outer函數(shù)中調(diào)用inner()函數(shù)outer()將上面的代碼修改如下:這是外層函數(shù)這是內(nèi)層函數(shù)運(yùn)行結(jié)果如下:任務(wù)實(shí)現(xiàn)Part.04分析代碼01編寫(xiě)代碼02任務(wù)實(shí)現(xiàn)1.分析代碼任務(wù)實(shí)現(xiàn)根據(jù)任務(wù)的功能需求,自定義4個(gè)函數(shù)add()、subtract()、multiply()、divide(),分別實(shí)現(xiàn)加法、減法、乘法和除法功能,每個(gè)函數(shù)定義兩個(gè)參數(shù),用于接收參與運(yùn)算的2個(gè)數(shù)字,并將運(yùn)算結(jié)果作為函數(shù)的返回值。在執(zhí)行除法運(yùn)算時(shí),需要考慮除數(shù)是否為0的情況,以免出現(xiàn)程序異常。1.分析代碼任務(wù)實(shí)現(xiàn)使用while循環(huán)語(yǔ)句保障程序持續(xù)運(yùn)行,直至用戶(hù)選擇退出系統(tǒng)為止。在while循環(huán)體中包含三個(gè)部分:1)使用print()函數(shù)輸出簡(jiǎn)易計(jì)算器的操作界面,并使用input()函數(shù)接收用戶(hù)的輸入。2)根據(jù)用戶(hù)的功能選擇和計(jì)算的數(shù)字,調(diào)用對(duì)應(yīng)的函數(shù)進(jìn)行計(jì)算,并輸出計(jì)算結(jié)果。3)通過(guò)break語(yǔ)句結(jié)束程序運(yùn)行。2.
編寫(xiě)代碼(1)任務(wù)實(shí)現(xiàn)defdivide(x,y):"""除法運(yùn)算"""
ify!=0:returnx/yelse:return"除數(shù)不能為零"defadd(x,y):"""加法運(yùn)算"""
returnx+ydefsubtract(x,y):"""減法運(yùn)算"""
returnx-ydefmultiply(x,y):"""乘法運(yùn)算"""
returnx*y2.
編寫(xiě)代碼(2)任務(wù)實(shí)現(xiàn)whileTrue:
print("------------簡(jiǎn)易計(jì)算器-------------\n選擇一個(gè)運(yùn)算:")
print("1.加法")
print("2.減法")
print("3.乘法")
print("4.除法")
print("5.退出")
choice=input("輸入選項(xiàng)編號(hào):")2.
編寫(xiě)代碼(3)任務(wù)實(shí)現(xiàn)ifchoicein('1','2','3','4'):num1=float(input("輸入第一個(gè)數(shù):"))
num2=float(input("輸入第二個(gè)數(shù):"))
ifchoice=='1':print(f"結(jié)果:{add(num1,num2)}")elifchoice=='2':print(f"結(jié)果:{subtract(num1,num2)}")elifchoice=='3':print(f"結(jié)果:{multiply(num1,num2)}")elifchoice=='4':print(f"結(jié)果:{divide(num1,num2)}")elifchoice=='5':print("退出程序.")
breakelse:print("無(wú)效的選項(xiàng),請(qǐng)重新輸入。")任務(wù)總結(jié)Part.05通過(guò)本任務(wù)的學(xué)習(xí),掌握了函數(shù)的作用、類(lèi)型,以及函數(shù)的定義、調(diào)用方法。在定義和調(diào)用函數(shù)時(shí),需要注意以下幾點(diǎn):函數(shù)命名:函數(shù)名應(yīng)該遵循Python的標(biāo)識(shí)符命名規(guī)則,一般使用小寫(xiě)字母和下劃線(xiàn)的組合,應(yīng)該能夠簡(jiǎn)單、清晰地表達(dá)函數(shù)的功能。嵌套定義:定義嵌套函數(shù)時(shí),在嵌套的外層函數(shù)體外,無(wú)法調(diào)用嵌套的內(nèi)層函數(shù)。參數(shù)匹配:在調(diào)用函數(shù)時(shí),必須提供正確數(shù)量和類(lèi)型的參數(shù)。如果參數(shù)數(shù)量或類(lèi)型不匹配,Python會(huì)報(bào)錯(cuò)。返回值:函數(shù)可以通過(guò)return語(yǔ)句返回一個(gè)值。如果沒(méi)有return語(yǔ)句,或者return后面沒(méi)有跟任何值,那么函數(shù)會(huì)返回None。 嵌套定義:定義嵌套函數(shù)時(shí),在嵌套的外層函數(shù)體外,無(wú)法調(diào)用嵌套的內(nèi)層函數(shù)。文檔字符串:可以為每個(gè)函數(shù)添加文檔字符串,以描述函數(shù)的功能、參數(shù)和返回值。有助于其他人理解代碼和后期代碼的維護(hù)。 任務(wù)提出01任務(wù)分析02知識(shí)準(zhǔn)備03任務(wù)2汽車(chē)進(jìn)銷(xiāo)存管理系統(tǒng)設(shè)計(jì)任務(wù)實(shí)現(xiàn)04任務(wù)總結(jié)05任務(wù)1打印樹(shù)形圖案任務(wù)提出Part.01提出任務(wù)運(yùn)用PyCharm開(kāi)發(fā)工具編寫(xiě)Python程序,設(shè)計(jì)一個(gè)簡(jiǎn)單的進(jìn)銷(xiāo)存管理系統(tǒng),用于實(shí)現(xiàn)汽車(chē)4S店的進(jìn)銷(xiāo)存業(yè)務(wù)管理,需要維護(hù)的汽車(chē)信息包括汽車(chē)品牌、顏色、價(jià)格、數(shù)量等。系統(tǒng)具有添加、刪除、修改、查詢(xún)汽車(chē)信息以及退出功能,任務(wù)分析Part.02分析任務(wù)1.創(chuàng)建Python程序car.py。2.定義一個(gè)列表用于存放所有的汽車(chē)信息。3.設(shè)計(jì)系統(tǒng)操作界面,接收用戶(hù)的輸入操作。4.根據(jù)功能模塊設(shè)計(jì)要求,為每項(xiàng)功能編寫(xiě)函數(shù),在函數(shù)主體中設(shè)計(jì)業(yè)務(wù)處理邏輯。5.根據(jù)用戶(hù)的功能選擇,調(diào)用并傳遞參數(shù)給不同的模塊函數(shù),實(shí)現(xiàn)業(yè)務(wù)功能。6.運(yùn)行測(cè)試程序,逐項(xiàng)測(cè)試各項(xiàng)功能是否正常。該任務(wù)主要實(shí)現(xiàn)的是汽車(chē)信息添加、修改、刪除、查詢(xún)等功能,可以根據(jù)功能設(shè)計(jì)不同的功能模塊函數(shù),通過(guò)調(diào)用模塊函數(shù)并傳遞相應(yīng)參數(shù)實(shí)現(xiàn)業(yè)務(wù)處理知識(shí)準(zhǔn)備Part.03位置參數(shù)傳遞01關(guān)鍵字參數(shù)傳遞02默認(rèn)值參數(shù)傳遞03知識(shí)準(zhǔn)備可變參數(shù)傳遞04混合參數(shù)傳遞05函數(shù)的返回值06變量作用域07通常將定義函數(shù)時(shí)設(shè)置的參數(shù)稱(chēng)為形式參數(shù)(簡(jiǎn)稱(chēng)為形參),將調(diào)用函數(shù)時(shí)傳入的參數(shù)稱(chēng)為實(shí)際參數(shù)(簡(jiǎn)稱(chēng)為實(shí)參)。函數(shù)的參數(shù)傳遞是指將實(shí)際參數(shù)傳遞給形式參數(shù)的過(guò)程。函數(shù)參數(shù)傳遞形參實(shí)參函數(shù)在被調(diào)用時(shí)會(huì)將實(shí)參按照相應(yīng)的位置依次傳遞給形參,也就是說(shuō)將第一個(gè)實(shí)參傳遞給第一個(gè)形參,將第二個(gè)實(shí)參傳遞給第二個(gè)形參,以此類(lèi)推。位置參數(shù)傳遞注意:位置參數(shù)傳遞位置參數(shù):按位置指定,實(shí)參和形參數(shù)量必須?致函數(shù)調(diào)?時(shí)括號(hào)中只寫(xiě)各個(gè)實(shí)參,這時(shí)形參的值與實(shí)參按照順序??對(duì)應(yīng)在調(diào)?函數(shù),指定的實(shí)際參數(shù)的數(shù)量,必須和形式參數(shù)的數(shù)量?致(傳多傳少都不行)關(guān)鍵字參數(shù)的傳遞是通過(guò)“形參=實(shí)參”的格式將實(shí)參與形參相關(guān)聯(lián),將實(shí)參按照相應(yīng)的關(guān)鍵字傳遞給形參。關(guān)鍵字參數(shù)傳遞傳遞方式的限定無(wú)論實(shí)參采用位置參數(shù)的方式傳遞,還是關(guān)鍵字參數(shù)的方式傳遞,每個(gè)形參都是有名稱(chēng)的,怎么區(qū)分用哪種方式傳遞呢?符
號(hào)“/”傳遞方式的限定Python在3.8版本中新增了僅限位置形參的語(yǔ)法,使用符號(hào)“/”來(lái)限定部分形參只接收位置傳遞方式的實(shí)參。deffunc(a,b,/,c):print(a,b,c)
表示在/形參前的參數(shù)只能通過(guò)位置參數(shù)傳遞。Python允許為參數(shù)設(shè)置默認(rèn)值,即在定義函數(shù)時(shí),直接給形式參數(shù)指定一個(gè)默認(rèn)值。默認(rèn)參數(shù)傳遞默認(rèn)參數(shù)傳遞不傳參默認(rèn)參數(shù)傳遞傳參調(diào)用函數(shù)函數(shù)調(diào)用形式不傳參,調(diào)用函數(shù)就直接使用默認(rèn)值。傳參,在調(diào)用時(shí)可以重新給予默認(rèn)值的參數(shù)
通過(guò)位置傳參方式給值
通過(guò)關(guān)鍵詞傳參方式給值1.參數(shù)能不能全部定義為默認(rèn)參數(shù)?函數(shù)調(diào)用形式2.默認(rèn)參數(shù)位置會(huì)不會(huì)受約束呢?參數(shù)全部定義為默認(rèn)參數(shù)默認(rèn)參數(shù)位置變化注意:默認(rèn)參數(shù)傳遞函數(shù)在定義時(shí)可以指定各參數(shù)的默認(rèn)值;默認(rèn)參數(shù)和其它參數(shù)同時(shí)存在,默認(rèn)參數(shù)必須位于必選參數(shù)的后面。如果函數(shù)在定義時(shí)無(wú)法確定需要接收多少個(gè)數(shù)據(jù),那么可以在定義函數(shù)時(shí)為形參添加“*”或“**”:可變參數(shù)的傳遞“*”:接收以元組形式打包的多個(gè)值“**”:接收以字典形式打包的多個(gè)值1.打包“*”定
義deff1(*args):print(args)#輸出參數(shù)的值調(diào)
用f1()#f1(‘a(chǎn)’,‘e’,‘u’,‘i’,‘o’)結(jié)
果()(‘a(chǎn)’,‘e’,‘u’,‘i’,‘o’)可變參數(shù)傳遞2.打包“**”定
義deff2(**kwargs):print(kwargs)#輸出參數(shù)的值調(diào)
用f2(name=‘john’,height=180,weight=70)f2()結(jié)
果{'name':'john','height':180,'weight':70}{}可變參數(shù)傳遞可變參數(shù)傳遞函數(shù)中添加“*”或“**”的形參可以是符合命名規(guī)范的任意名稱(chēng),建議使用*args和**kwargs。若函數(shù)沒(méi)有接收到任何數(shù)據(jù),參數(shù)*args和**kwargs為空,即為空元組或空字典。
*的作用:在函數(shù)定義中,收集所有位置參數(shù)到一個(gè)新的元組,并將整個(gè)元組賦值給變量args。**
的作用:在函數(shù)定義中,收集關(guān)鍵字參數(shù)到一個(gè)新的字典,并將整個(gè)字典賦值給變量kwargs??勺儏?shù)傳遞1.實(shí)參是元組,可以使用“*”拆分成多個(gè)值,按位置參數(shù)傳給形參。2.實(shí)參是字典,可以使用“**”拆分成多個(gè)鍵值對(duì),按關(guān)鍵字參數(shù)傳給形參。函數(shù)調(diào)用時(shí)——實(shí)參1.解包“*”定
義deffun1(c1,c2,c3,c4,c5):print(c1,c2,c3,c4,c5)調(diào)
用chs=(‘a(chǎn)’,‘e’,‘u’,‘i’,‘o’)fun1(*chs)結(jié)
果‘a(chǎn)’,‘e’,‘u’,‘i’,‘o’可變參數(shù)傳遞2.解包“**”定
義deffun2(name,height,weight):print(name,height,weight)調(diào)
用boy={'name':'john','height':180,'weight':70}
fun2(**boy)結(jié)
果john18070可變參數(shù)傳遞1.先按照參數(shù)的位置傳遞。2.再按照參數(shù)的關(guān)鍵字傳遞。3.最后按打包的形式傳遞?;旌蠀?shù)傳遞注意:定義函數(shù)時(shí)參數(shù)有默認(rèn)值,則帶有默認(rèn)值的參數(shù)必須跟在必選參數(shù)的后面?;旌蠀?shù)傳遞func(1,2)#按位置傳遞方式將1、2賦值給a、b,c采用默認(rèn)值0func(1,2,c=3)#按位置傳遞方式將1、2賦值給a、b,將3賦值給c#a=1b=2c=3args=()kw={}func(1,2,3,‘x',‘y')#a=1b=2c=3args=(‘x',‘y')kw={}func(1,2,3,‘x',‘y',s=100)#a=1b=2c=3args=('a','b')kw={‘s':100}函數(shù)返回值函數(shù)中的return語(yǔ)句會(huì)在函數(shù)結(jié)束時(shí)將數(shù)據(jù)返回給程序,同時(shí)讓程序回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。defadd(num1,num2):res=num1+num2returnres#returnnum1,num2
如果函數(shù)使用return語(yǔ)句返回了多個(gè)值,那么這些值將被保存到元組中。一般格式為return[返回值]函數(shù)返回值如果函數(shù)沒(méi)有返回值,即函數(shù)執(zhí)行完畢后,不需要給調(diào)用處提供數(shù)據(jù),那么return可以省略不寫(xiě)。函數(shù)的返回值,如果是一個(gè),直接返回原類(lèi)型。函數(shù)的返回值如果是多個(gè),返回的值為元組。函數(shù)返回值局部變量局部變量和全局變量定義:局部變量,就是在函數(shù)內(nèi)部定義的變量約束:其作用范圍是這個(gè)函數(shù)內(nèi)部,即只能在這個(gè)函數(shù)中使用,在函數(shù)的外部是不能使用的。全局變量局部變量和全局變量定義:在函數(shù)外邊定義的變量叫做全局變量。范圍:全局變量能夠在所有的函數(shù)中進(jìn)行訪問(wèn)。局部變量和全局變量訪問(wèn)修改局部變量和全局變量1.局部變量和全局變量定義的位置不同,作用域不同。2.全局變量在函數(shù)內(nèi)部只能被訪問(wèn),而無(wú)法直接修改。1.global關(guān)鍵字global和nonlocal關(guān)鍵字使用global關(guān)鍵字可以將局部變量聲明為全局變量,其使用方法如下:global變量名like1=10#like1在這里是一個(gè)全局變量deffunc():
globallike1#like1聲明時(shí),不能直接賦值。like1+=20#函數(shù)內(nèi)部修改變量like1print('函數(shù)內(nèi)部修改后:',like1)2.nonlocal關(guān)鍵字global和nonlocal關(guān)鍵字使用nonlocal關(guān)鍵字可以在局部作用域中修改嵌套作用域中定義的變量,其使用方法如下:nonlocal變量名deftest():number=10deftest_in():
nonlocalnumbernumber=20test_in()print(number)test()任務(wù)實(shí)現(xiàn)Part.04分析代碼01編寫(xiě)代碼02任務(wù)實(shí)現(xiàn)1.分析代碼任務(wù)實(shí)現(xiàn)(1)定義列表car_info用于保存所有的汽車(chē)信息,列表的元素為字典,字典中設(shè)置brand、color、price、num四個(gè)鍵分別對(duì)應(yīng)汽車(chē)的品牌、顏色、價(jià)格、數(shù)量信息。(2)定義main_menu()函數(shù),用于輸出系統(tǒng)的功能界面。(3)定義input_car_info()、add_car_info()、del_car_info(car)、modify_car_info()、show_car_info()功能函數(shù)用于實(shí)現(xiàn)錄入汽車(chē)信息、添加汽車(chē)信息入庫(kù)、修改已有汽車(chē)信息、刪除指定汽車(chē)信息、查詢(xún)?nèi)科?chē)信息等功能。(4)在main()函數(shù)中,調(diào)用main_menu()函數(shù),并接收用戶(hù)的功能選擇,調(diào)用相應(yīng)的功能函數(shù)。定義列表輸出用戶(hù)操作界面任務(wù)實(shí)現(xiàn)2.編寫(xiě)代碼啟動(dòng)PyCharm,在項(xiàng)目文件夾Chapter07中新建Python文件car.py錄入汽車(chē)信息函數(shù)添加汽車(chē)信息函數(shù)任務(wù)實(shí)現(xiàn)2.編寫(xiě)代碼刪除汽車(chē)信息函數(shù)修改汽車(chē)信息函數(shù)任務(wù)實(shí)現(xiàn)2.編寫(xiě)代碼顯示所有的汽車(chē)信息函數(shù)任務(wù)實(shí)現(xiàn)2.編寫(xiě)代碼主函數(shù)任務(wù)實(shí)現(xiàn)2.編寫(xiě)代碼任務(wù)總結(jié)Part.05通過(guò)本任務(wù)的學(xué)習(xí),系統(tǒng)掌握Python中參數(shù)的傳遞方法、不同類(lèi)型返回值以及變量的作用域的靈活應(yīng)用。在使用是需要注意以下幾點(diǎn)。參數(shù)命名:參數(shù)名應(yīng)該盡量清晰、簡(jiǎn)潔,并準(zhǔn)確描述參數(shù)的作用;避免使用Python中的保留關(guān)鍵字作為參數(shù)名;遵循Python的命名慣例,使用小寫(xiě)字母和下劃線(xiàn)來(lái)分隔單詞。參數(shù)類(lèi)型:Python是一種動(dòng)態(tài)類(lèi)型語(yǔ)言,所以函數(shù)的參數(shù)不需要預(yù)先聲明類(lèi)型。位置參數(shù)與關(guān)鍵字參數(shù):在調(diào)用函數(shù)時(shí),可以使用位置參數(shù)(按照參數(shù)在函數(shù)定義中的順序傳遞)或關(guān)鍵字參數(shù)(通過(guò)參數(shù)名明確指定)。使用關(guān)鍵字參數(shù)可以提高代碼的可讀性,并允許在調(diào)用函數(shù)時(shí)改變參數(shù)的順序。默認(rèn)參數(shù):可以為函數(shù)參數(shù)提供默認(rèn)值,在調(diào)用函數(shù)時(shí)可以省略這些參數(shù)。如果帶有默認(rèn)值的參數(shù)與必選參數(shù)同時(shí)存在,則帶有默認(rèn)值的參數(shù)必須位于必選參數(shù)的后面??勺儏?shù)與關(guān)鍵字參數(shù):使用*args可以接收任意數(shù)量的位置參數(shù),它們被打包為一個(gè)元組。使用**kwargs可以接收任意數(shù)量的關(guān)鍵字參數(shù),它們被打包為一個(gè)字典。當(dāng)同時(shí)使用*args和**kwargs時(shí),*args必須放在**kwargs前面。參數(shù)驗(yàn)證:建議在函數(shù)內(nèi)部對(duì)傳入的參數(shù)進(jìn)行驗(yàn)證,確保參數(shù)的數(shù)據(jù)類(lèi)型、取值范圍等是符合預(yù)期的,對(duì)于不符合預(yù)期的參數(shù)值,可以提前拋出異常。變量重名:為了避免變量名稱(chēng)沖突,在同一作用域中不能有重名,但是不同的作用域內(nèi)可以重名。如果在函數(shù)內(nèi)部定義了一個(gè)與全局變量同名的局部變量,那么在函數(shù)內(nèi)部訪問(wèn)該變量時(shí),將優(yōu)先使用局部變量,而不是全局變量。變量作用域:在函數(shù)內(nèi)部,如果要修改全局變量,需要使用global關(guān)鍵字進(jìn)行聲明。否則,Python會(huì)將其視為一個(gè)新的局部變量。在嵌套函數(shù)(內(nèi)部函數(shù))中,可以直接訪問(wèn)外部函數(shù)(外部作用域)的局部變量,但是,外部函數(shù)不能直接訪問(wèn)嵌套函數(shù)的局部變量。任務(wù)提出01任務(wù)分析02知識(shí)準(zhǔn)備03任務(wù)3漢諾塔游戲設(shè)計(jì)任務(wù)實(shí)現(xiàn)04任務(wù)總結(jié)05任務(wù)1打印樹(shù)形圖案任務(wù)提出Part.01提出任務(wù)漢諾塔游戲是一個(gè)經(jīng)典遞歸問(wèn)題。假設(shè)有n個(gè)圓盤(pán),編號(hào)從1到n,初始時(shí)按照從大到小的順序依次放置在A柱上,較大的圓盤(pán)在下,較小的圓盤(pán)在上。目標(biāo)是將這些圓盤(pán)移動(dòng)到C柱上,移動(dòng)過(guò)程中可以借助B柱,但是在移動(dòng)過(guò)程中大圓盤(pán)不能放到小圓盤(pán)上、每次只能移動(dòng)一個(gè)圓盤(pán),如圖所示。運(yùn)用PyCharm開(kāi)發(fā)工具編寫(xiě)Python程序,完成圓盤(pán)從A柱到C柱的移動(dòng),并顯示移動(dòng)過(guò)程。任務(wù)分析Part.02分析任務(wù)1.創(chuàng)建Python程序hanoi.py。2.創(chuàng)建遞歸函數(shù)。在遞歸函數(shù)中,記錄每一次移動(dòng)的步驟。3.使用input()函數(shù)接受需要移動(dòng)的盤(pán)子數(shù)量。4.調(diào)用遞歸函數(shù),實(shí)現(xiàn)盤(pán)子的移動(dòng),輸出盤(pán)子移動(dòng)的過(guò)程。5.運(yùn)行測(cè)試,檢驗(yàn)是否正確完成移動(dòng)。本任務(wù)主要完成的是將A柱上所有的圓盤(pán)按照要求移動(dòng)到C柱上,要解決這個(gè)問(wèn)題,可以使用遞歸函數(shù)。具體的任務(wù)實(shí)施分析如下:知識(shí)準(zhǔn)備Part.03匿名函數(shù)定義01匿名函數(shù)的應(yīng)用02知識(shí)準(zhǔn)備遞歸函數(shù)03遞歸函數(shù)經(jīng)典應(yīng)用04匿名函數(shù)是一類(lèi)無(wú)須定義標(biāo)識(shí)符的函數(shù),它與普通函數(shù)一樣可以在任何地方使用,python中使用lambda關(guān)鍵字定義匿名函數(shù)。語(yǔ)法格式如下:匿名函數(shù)定義lambda<形式參數(shù)列表>:<表達(dá)式>匿名函數(shù)與普通函數(shù)的主要區(qū)別如下:匿名函數(shù)定義普通函數(shù)定義時(shí)有名稱(chēng)函數(shù)體中包含有多條語(yǔ)句實(shí)現(xiàn)比較復(fù)雜的功能能被其他程序使用匿名函數(shù)匿名函數(shù)沒(méi)有名稱(chēng)函數(shù)體只能是一個(gè)表達(dá)式實(shí)現(xiàn)的功能比較簡(jiǎn)單不能被其他程序使用定義好的匿名函數(shù)不能直接使用,最好使用一個(gè)變量保存它,以便后期可以隨時(shí)使用這個(gè)函數(shù)。匿名函數(shù)定義示例#定義匿名函數(shù),并將它返回的函數(shù)對(duì)象賦值給變量temptemp=lambdax:x**3temp(10)匿名函數(shù)跟函數(shù)一起使用,根據(jù)字符串長(zhǎng)度進(jìn)行排序。匿名函數(shù)的應(yīng)用示例lst=['天宮一號(hào)','神州十三號(hào)','嫦娥號(hào)','北斗導(dǎo)航系統(tǒng)']print(sorted(lst,key=lambdas:len(s)))函數(shù)在定義時(shí)可以直接或間接地調(diào)用其他函數(shù)。若函數(shù)內(nèi)部調(diào)用了自身,則這個(gè)函數(shù)被稱(chēng)為遞歸函數(shù)。遞歸函數(shù)遞歸函數(shù)在定義時(shí)需要滿(mǎn)足兩個(gè)基本條件:一個(gè)是遞歸公式,另一個(gè)是邊界條件。其中:遞歸函數(shù)遞歸公式:是求解原問(wèn)題或相似的子
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度戶(hù)外餐飲廚房搭建與維護(hù)合同3篇
- 二零二五年度ROHS環(huán)保技術(shù)咨詢(xún)服務(wù)合同2篇
- 2025個(gè)人退伙經(jīng)營(yíng)合同(食品加工與安全協(xié)議)3篇
- 二零二五版購(gòu)物中心店面裝修與品牌推廣合同4篇
- 2025年度高端裝備制造產(chǎn)品銷(xiāo)售返利合同3篇
- 二零二五年度鄉(xiāng)村旅游地產(chǎn)策劃推廣合同范本2篇
- 二零二五年度現(xiàn)代農(nóng)業(yè)場(chǎng)院租賃合同示范文本4篇
- 2025年度母嬰護(hù)理專(zhuān)家團(tuán)隊(duì)月嫂服務(wù)合同4篇
- 2025國(guó)際工程的合同管理方法探討
- 2025中外專(zhuān)利技術(shù)許可合同范本版
- 南通市2025屆高三第一次調(diào)研測(cè)試(一模)地理試卷(含答案 )
- 2025年上海市閔行區(qū)中考數(shù)學(xué)一模試卷
- 2025中國(guó)人民保險(xiǎn)集團(tuán)校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 重癥患者家屬溝通管理制度
- 法規(guī)解讀丨2024新版《突發(fā)事件應(yīng)對(duì)法》及其應(yīng)用案例
- IF鋼物理冶金原理與關(guān)鍵工藝技術(shù)1
- 銷(xiāo)售提成對(duì)賭協(xié)議書(shū)范本 3篇
- 勞務(wù)派遣招標(biāo)文件范本
- EPC項(xiàng)目階段劃分及工作結(jié)構(gòu)分解方案
- 信息安全意識(shí)培訓(xùn)課件
- 小學(xué)二年級(jí)數(shù)學(xué)口算練習(xí)題1000道
評(píng)論
0/150
提交評(píng)論