版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)院系部名稱主講:授課教師姓名Python基礎(chǔ)教程第5章代碼復(fù)用-函數(shù)
如果在開(kāi)發(fā)程序時(shí),需要多次使用某塊代碼,此時(shí)為了提高編寫的效率以及代碼的重用,把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊,這就是函數(shù)。
在高級(jí)語(yǔ)言程序中,函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。因此其實(shí)函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一或相關(guān)聯(lián)功能的代碼段。第5章代碼復(fù)用-函數(shù)【教學(xué)導(dǎo)航】學(xué)習(xí)目標(biāo)1.了解函數(shù)的的概念2.掌握函數(shù)的定義和調(diào)用3.掌握函數(shù)的參數(shù)4.掌握函數(shù)的返回值5.掌握函數(shù)的嵌套調(diào)用教學(xué)重點(diǎn)1.函數(shù)的定義和調(diào)用2.函數(shù)的參數(shù)3.函數(shù)的返回值教學(xué)方式案例教學(xué)法、分組討論法、自主學(xué)習(xí)法、探究式訓(xùn)練法課時(shí)建議6課時(shí)本章主要內(nèi)容Python全局與局部變量Python函數(shù)Python函數(shù)參數(shù)123Python匿名函數(shù)4實(shí)訓(xùn)555.1Python函數(shù)
Python提供了許多內(nèi)建函數(shù),比如基本輸入輸出中所提到的input()和print()。也可以自己創(chuàng)建函數(shù),這叫作用戶自定義函數(shù)。要寫好函數(shù),必須清楚函數(shù)的組織格式(即函數(shù)如何定義);要用好函數(shù),則必須把握函數(shù)的調(diào)用機(jī)制。本節(jié)介紹函數(shù)概念、定義及調(diào)用等函數(shù)基礎(chǔ)。
[學(xué)習(xí)目標(biāo)]1.了解函數(shù)的概念2.掌握函數(shù)的定義及調(diào)用3.了解函數(shù)的嵌套定義5.1.1函數(shù)概念使用函數(shù)有兩個(gè)目的:(1)分解問(wèn)題,降低編程難度。(2)另一方面,代碼重用。
把實(shí)現(xiàn)某一特定功能的相關(guān)語(yǔ)句按某種格式組織在一起形成一個(gè)程序單位,并給程序單位取一個(gè)相應(yīng)的名稱,這樣的一個(gè)程序單位就叫函數(shù)(function)。函數(shù)有時(shí)也被稱作例程或過(guò)程。而給程序單位所起的名稱被稱作函數(shù)名。Python語(yǔ)言的函數(shù)分為:用戶自定義函數(shù)、系統(tǒng)內(nèi)置函數(shù)和Python標(biāo)準(zhǔn)庫(kù)(模塊中定義的)函數(shù)。5.1.1函數(shù)概念
系統(tǒng)內(nèi)置函數(shù)是用戶可直接使用的函數(shù)。用戶自定義函數(shù)是用戶自己定義的函數(shù)。
一個(gè)函數(shù)被使用時(shí)就是指這個(gè)函數(shù)被調(diào)用。函數(shù)調(diào)用通過(guò)調(diào)用語(yǔ)句實(shí)現(xiàn),調(diào)用語(yǔ)句所在的程序或函數(shù)稱為調(diào)用程序或調(diào)用函數(shù);被調(diào)用的函數(shù)簡(jiǎn)稱為被調(diào)函數(shù)。
調(diào)用語(yǔ)句被執(zhí)行的過(guò)程是被調(diào)函數(shù)中的語(yǔ)句被執(zhí)行,被調(diào)函數(shù)執(zhí)行完后,返回調(diào)用語(yǔ)句的下一句,返回時(shí)可以反饋結(jié)果給調(diào)用語(yǔ)句。5.1.2函數(shù)定義定義函數(shù)的規(guī)則如下:函數(shù)代碼塊以def關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)()。函數(shù)的命名規(guī)則和對(duì)象變量相同,不能以數(shù)字開(kāi)頭,不得與關(guān)鍵字同名。任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間。圓括號(hào)之間可以用于定義參數(shù)。函數(shù)的第一行語(yǔ)句可以選擇性的使用文檔字符串—用于存放函數(shù)說(shuō)明。函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。Return[expression]結(jié)束函數(shù),選擇性的返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回None。5.1.2函數(shù)定義函數(shù)的定義格式:def<函數(shù)名>(<參數(shù)表>): <函數(shù)體>return表達(dá)式
其中,<函數(shù)名>是任何有效的Python標(biāo)識(shí)符,<參數(shù)表>是用“,”分隔的參數(shù),參數(shù)個(gè)可以是0個(gè)、1個(gè)或多個(gè),參數(shù)用于調(diào)用程序在調(diào)用函數(shù)時(shí)向函數(shù)傳遞值。
寫在函數(shù)定義語(yǔ)句(def語(yǔ)句)函數(shù)名后面的圓括號(hào)中的參數(shù)稱形式參數(shù),簡(jiǎn)稱形參。形參只能是變量。形參只能函數(shù)被調(diào)用時(shí)才分配內(nèi)存單元,調(diào)用結(jié)束時(shí)釋放所分配的內(nèi)存單元。
寫在調(diào)用語(yǔ)句中函數(shù)名后面的圓括號(hào)中的參數(shù)稱實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。實(shí)參可以是常量、變量、表達(dá)式,在實(shí)施函數(shù)調(diào)用時(shí),實(shí)參必須有確定的值。<函數(shù)體>是函數(shù)被調(diào)用時(shí)執(zhí)行的代碼段。至少要有一條語(yǔ)句。5.1.2函數(shù)定義函數(shù)定義示例如例5-1-1所示。在此例中,只是定義了函數(shù),并沒(méi)有調(diào)用函數(shù),此時(shí)運(yùn)行程序不會(huì)有任何結(jié)果,因?yàn)楹瘮?shù)還沒(méi)有被使用。函數(shù)定義后,如果要使用,必須進(jìn)行函數(shù)調(diào)用。5.1.3函數(shù)調(diào)用
定義一個(gè)函數(shù)時(shí),定義了函數(shù)名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。
函數(shù)只是一個(gè)代碼塊,本身不會(huì)自動(dòng)加載執(zhí)行的,必須要有相關(guān)的調(diào)用。在面向?qū)ο蟮某绦虿僮髦?,除了類默認(rèn)主函數(shù)和構(gòu)造函數(shù)外,其他函數(shù)必須通過(guò)編寫代碼調(diào)用后方可執(zhí)行。一般是程序函數(shù)的結(jié)構(gòu)完成以后,通過(guò)另一個(gè)函數(shù)調(diào)用執(zhí)行。當(dāng)然,也可以直接從Python提示符執(zhí)行。函數(shù)的調(diào)用方式很簡(jiǎn)單,通過(guò)“函數(shù)名()”就可以完成任務(wù)調(diào)用。
如要執(zhí)行例5-1-1的函數(shù)代碼,調(diào)用print_into()函數(shù)即可。代碼如下:#定義函數(shù)后,函數(shù)如果要執(zhí)行,需要在函數(shù)體外部調(diào)用它print_info()5.1.3函數(shù)調(diào)用函數(shù)調(diào)用的格式如下:
函數(shù)名([參數(shù)表])。
其中,函數(shù)名是事先定義的函數(shù)名。此時(shí)參數(shù)表中的參數(shù)不再是形參,而應(yīng)該是實(shí)際參數(shù)表,此實(shí)參表可以由多個(gè)實(shí)參組成,中間使用逗號(hào)“,”分隔,實(shí)參需要有明確的值。
在Python中,實(shí)參的個(gè)數(shù)可以和形參相同,也可以少于形參的個(gè)數(shù),如果實(shí)參少于形參的個(gè)數(shù),那形參需要設(shè)置默認(rèn)值。5.1.3函數(shù)調(diào)用帶參函數(shù)使用如例5-1-2所示。
例5-1-2函數(shù)帶參數(shù)調(diào)用示例。
以上實(shí)例中,倒數(shù)第二行代碼y=sum(n)中,sum(n)即為函數(shù)帶參調(diào)用。在例子中,首先定義了sum()函數(shù),進(jìn)行求累計(jì)和的操作。在函數(shù)體外定義輸入一個(gè)變量,用來(lái)作函數(shù)實(shí)參使用,然后調(diào)用函數(shù)sum(),并進(jìn)行輸出。5.1.3函數(shù)調(diào)用函數(shù)調(diào)用有以下幾種方式:函數(shù)語(yǔ)句。函數(shù)調(diào)用單獨(dú)出現(xiàn),一般此時(shí)不需要函數(shù)的返回值,只是要把函數(shù)執(zhí)行一遍完成函數(shù)的操作。函數(shù)表達(dá)式。在表達(dá)式中調(diào)用函數(shù),此時(shí)一般需要函數(shù)的返回值。這時(shí)函數(shù)值被當(dāng)作一個(gè)參與表達(dá)式運(yùn)算的數(shù)據(jù)對(duì)象。函數(shù)作參數(shù)??梢詫⒑瘮?shù)調(diào)用得到的值作為其他函數(shù)調(diào)用的實(shí)際參數(shù)。
5.1.3函數(shù)調(diào)用注意:函數(shù)調(diào)用時(shí)要做的工作與步驟:(1)保存現(xiàn)場(chǎng)。如果是以函數(shù)語(yǔ)句形式調(diào)用,調(diào)用語(yǔ)句的下一條語(yǔ)句就是現(xiàn)場(chǎng);如果是以函數(shù)表達(dá)式或函數(shù)參數(shù)的形式調(diào)用,因?yàn)楹瘮?shù)調(diào)用返回時(shí)的下一步工作是讓返回值參與表達(dá)式的計(jì)算,就把這一步的工作當(dāng)成現(xiàn)場(chǎng)。(2)將實(shí)參傳遞給形參。(3)程序的執(zhí)行轉(zhuǎn)向函數(shù)。(4)函數(shù)執(zhí)行完后,恢復(fù)現(xiàn)場(chǎng)。函數(shù)執(zhí)行完后,要知道返回,就是要返回到什么地方繼續(xù)執(zhí)行。5.1.4函數(shù)的嵌套定義Python語(yǔ)言支持函數(shù)的嵌套定義。函數(shù)的嵌套定義是在函數(shù)體內(nèi)中再定義子函數(shù),并實(shí)現(xiàn)子函數(shù)的調(diào)用,如例5-1-3所示。
上例中定義了函數(shù)second()。在second()函數(shù)中,又嵌套定義了thirth()函數(shù)。事實(shí)上,嵌套定義函數(shù)意義并不大。嵌套函數(shù),更多的體現(xiàn)在嵌套調(diào)用上,嵌套調(diào)用在眾多的程序語(yǔ)言中頻繁使用。Python定義嵌套函數(shù)時(shí),一定要注意縮進(jìn)。函數(shù)是是采用縮進(jìn)來(lái)表示級(jí)別的。如果不是嵌套函數(shù),一定要和其他函數(shù)是同一縮進(jìn)。5.2Python函數(shù)參數(shù)函數(shù)根據(jù)有沒(méi)有參數(shù),有沒(méi)有返回值,可以相互組合,一共有以下4種:●無(wú)參數(shù),無(wú)返回值?!駸o(wú)參數(shù),有返回值。●有參數(shù),無(wú)返回值?!裼袇?shù),有返回值。本節(jié)介紹函數(shù)參數(shù)與返回值。[學(xué)習(xí)目標(biāo)]1.了解函數(shù)的參數(shù),掌握函數(shù)的必備參數(shù)、命名參數(shù)、默認(rèn)參數(shù)、不定長(zhǎng)參數(shù)等。2.了解并掌握參數(shù)的傳遞。3.了解并掌握函數(shù)返回值。5.2.1參數(shù)函數(shù)可以不使用參數(shù),但不使用參數(shù)的函數(shù)其使用范圍就會(huì)受到限制,局限性很大。為了讓函數(shù)能具有比較高的通用性,需要為函數(shù)添加參數(shù)。以下是調(diào)用函數(shù)時(shí)可使用的正式參數(shù)類型:必備參數(shù)、命名參數(shù)、默認(rèn)參數(shù)、不定長(zhǎng)參數(shù)。5.2.1參數(shù)1.必備參數(shù)必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的參數(shù)個(gè)數(shù)必須和聲明時(shí)的一樣。如果調(diào)用時(shí)沒(méi)有必備參數(shù),則程序會(huì)提示錯(cuò)誤,如例5-2-1所示。例5-2-1錯(cuò)誤調(diào)用實(shí)例。如上例所示,調(diào)用printme()函數(shù),必須傳入一個(gè)參數(shù),不然會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。5.2.1參數(shù)2.命名參數(shù)命名參數(shù)和函數(shù)調(diào)用關(guān)系緊密,調(diào)用方用參數(shù)的命名確定傳入的參數(shù)值。Python會(huì)跳過(guò)不傳的參數(shù)或者亂序傳參,因?yàn)镻ython解釋器能夠用參數(shù)名匹配參數(shù)值。例如,用命名參數(shù)調(diào)用printme()函數(shù),如例5-2-2所示。例5-2-2調(diào)用時(shí)使用命名參數(shù)實(shí)例。5.2.1參數(shù)Python中,函數(shù)參數(shù)可以直接傳值,如例5-2-3所示。例5-2-3命名參數(shù)傳值順序。上例中,函數(shù)調(diào)用時(shí),使用命名參數(shù),順序顛倒傳參,同樣可以實(shí)現(xiàn)。可以發(fā)現(xiàn)命名參數(shù)順序并一定需要按形參順序輸出,只要有相應(yīng)參數(shù)即可。5.2.1參數(shù)Python中,函數(shù)參數(shù)可以直接傳值,如例5-2-3所示。上例中,函數(shù)調(diào)用時(shí),使用命名參數(shù),順序顛倒傳參,同樣可以實(shí)現(xiàn)??梢园l(fā)現(xiàn)命名參數(shù)順序并一定需要按形參順序輸出,只要有相應(yīng)參數(shù)即可。5.2.1參數(shù)(3)默認(rèn)參數(shù)
定義函數(shù)時(shí),可以給函數(shù)的參數(shù)設(shè)置設(shè)置默認(rèn)值。也就是說(shuō),Python中,對(duì)于形參,還可以使用默認(rèn)值。如果函數(shù)定義中存在帶有默認(rèn)值的參數(shù),該參數(shù)及其所有后續(xù)參數(shù)都是可選的。如果沒(méi)有給函數(shù)定義中的所有可選參數(shù)賦值,就會(huì)引發(fā)SyntaxError異常。
調(diào)用函數(shù)時(shí),缺省參數(shù)的值如果沒(méi)有傳入,則被認(rèn)為是默認(rèn)值,如例5-2-4所示。5.2.1參數(shù)(3)默認(rèn)參數(shù)
定義函數(shù)時(shí),可以給函數(shù)的參數(shù)設(shè)置設(shè)置默認(rèn)值。也就是說(shuō),Python中,對(duì)于形參,還可以使用默認(rèn)值。如果函數(shù)定義中存在帶有默認(rèn)值的參數(shù),該參數(shù)及其所有后續(xù)參數(shù)都是可選的。如果沒(méi)有給函數(shù)定義中的所有可選參數(shù)賦值,就會(huì)引發(fā)SyntaxError異常。
調(diào)用函數(shù)時(shí),缺省參數(shù)的值如果沒(méi)有傳入,則被認(rèn)為是默認(rèn)值,如例5-2-4所示。上例中會(huì)打印默認(rèn)的age。調(diào)用時(shí)age并沒(méi)有被傳入,但age參數(shù)使用“age=35”給了默認(rèn)值。調(diào)用時(shí),實(shí)參如果不給值,則直接使用默認(rèn)值。但如果不給age默認(rèn)值,將引發(fā)異常。5.2.1參數(shù)4.不定長(zhǎng)參數(shù)如果需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。這些參數(shù)叫作不定長(zhǎng)參數(shù),和上述2種參數(shù)不同,聲明時(shí)不會(huì)命名?;菊Z(yǔ)法如下:deffunctionname([formal_args,]*args_tuple,**args_dict):"函數(shù)_文檔字符串"function_suitereturn[expression]在上述格式中,函數(shù)有三個(gè)參數(shù),其中[formal_args,]為形參,*args_tuple,**args_dict為不定長(zhǎng)參數(shù)。5.2.1參數(shù)當(dāng)調(diào)用函數(shù)傳入?yún)?shù)時(shí),會(huì)優(yōu)先匹配[formal_args,]形參的個(gè)數(shù),如果傳入?yún)?shù)和形參個(gè)數(shù)相同,不定長(zhǎng)參數(shù)會(huì)返回空的元組和字典;如果傳入的參數(shù)個(gè)數(shù)比形參要多,則進(jìn)行以下處理:1.如果參數(shù)只有值,那么*args_tuple不定長(zhǎng)參數(shù)會(huì)以元組形式存放多余的值,此時(shí)**args_dict不定長(zhǎng)參數(shù)為空字典。2.如果參數(shù)是鍵值對(duì)方式,例如“m=100”,此時(shí)**args_dict不定長(zhǎng)參數(shù)以字典形式保存這些參數(shù),如{m:100}。具體示例演示如例5-2-5所示。
例5-2-5不定長(zhǎng)參數(shù)傳值示例。5.2.2參數(shù)傳遞
參數(shù)傳遞方式是指實(shí)參向形參傳遞參數(shù)的方式。Python語(yǔ)言只有一種參數(shù)傳遞方式,就是形參僅僅引用傳入對(duì)象的名稱。就是其它語(yǔ)言的傳值方式。這種傳值方式是讓形參直接引用實(shí)參的值。從理論上講,如果實(shí)參是一個(gè)變量,形參變量的變化不會(huì)影響實(shí)參變量。本章前面的例子都是傳值。
但是,如果傳遞的對(duì)象是可變對(duì)象,在函數(shù)中又修改了可變對(duì)象,這些修改將反映到原始對(duì)象中。這可以理解為形參影響了實(shí)參,其實(shí)質(zhì)是因?yàn)樵诳勺儗?duì)象中,傳遞的對(duì)象和原始對(duì)象用的是同一個(gè)引用。5.2.2參數(shù)傳遞參數(shù)(自變量)在Python中一般是按引用傳遞的。如果在函數(shù)中修改了參數(shù),那么在調(diào)用這個(gè)函數(shù)的主調(diào)程序(函數(shù))中,原始的參數(shù)也被改變了,如例5-2-6所示。例5-2-6可變對(duì)象參數(shù)傳遞。在可變對(duì)象中,傳入函數(shù)的對(duì)象和在末尾添加新內(nèi)容的對(duì)象用的是同一個(gè)引用,所以,改變其中一個(gè),另一個(gè)數(shù)值也隨之改變。5.2.3函數(shù)返回值從函數(shù)功能上講,函數(shù)的形參是函數(shù)的輸入?yún)?shù),函數(shù)的返回值是函數(shù)的輸出參數(shù)。在函數(shù)的定義中,<函數(shù)體>內(nèi)的return語(yǔ)句是向主調(diào)程序(函數(shù))傳遞返回值的語(yǔ)句。它的格式是:return<表達(dá)式1>[,<表達(dá)式2>[,...[,<表達(dá)式n>]]]可以向主調(diào)程序(函數(shù))傳遞多個(gè)返回值,這要求主調(diào)程序(函數(shù))有多個(gè)變量接收這返回的多個(gè)值。如果函數(shù)不返回值,就不必使用return語(yǔ)句,或使用”returnNone”。5.2.3函數(shù)返回值return語(yǔ)句[表達(dá)式]退出函數(shù),選擇性的向調(diào)用方返回一個(gè)表達(dá)式。不帶參數(shù)值的return語(yǔ)句返回None。如何返回?cái)?shù)值,如例5-2-7所示。例5-2-7返回值操作實(shí)例。5.3Python全局變量與局部變量變量的作用域是Python學(xué)習(xí)中一個(gè)必須理解和掌握的知識(shí)。本節(jié)從局部變量和全局變量開(kāi)始全面解析Python中的變量作用域。[學(xué)習(xí)目標(biāo)]1.了解變量作用域2.了解Python變量和局部變量3.了解掌握global語(yǔ)句4.了解并掌握nonlocal語(yǔ)句。5.3.1變量作用域
變量的使用范圍就是變量作用域。一個(gè)程序的所有的變量并不是在哪個(gè)位置都可以訪問(wèn)的。訪問(wèn)權(quán)限決定于這個(gè)變量是在哪里賦值的。
變量的作用域決定了在哪一部分程序可以訪問(wèn)哪個(gè)變量名稱。Python在查找‘名稱-對(duì)象’映射時(shí),是按照LEGB規(guī)則對(duì)命名空間的不同層次進(jìn)行查找。LEGB規(guī)則,表示的是Local->Enclosing->Global->Built-in,其中的箭頭方向表示的是搜索順序。Local:函數(shù)或者類方法內(nèi)部,包括局部變量和參數(shù)。Enclosing:外部嵌套函數(shù)區(qū)域,常見(jiàn)的是閉包函數(shù)的外層函數(shù)。Global:全局作用域。Built-in:內(nèi)置模塊名字空間,內(nèi)建作用域。5.3.2變量和局部變量變量是擁有匹配對(duì)象的名字(標(biāo)識(shí)符)。命名空間是一個(gè)包含了變量名稱們(鍵)和它們各自相應(yīng)的對(duì)象們(值)的字典。在函數(shù)中,變量分為全局變量和局部變量。1.全局變量:一個(gè)定義在程序中(所有函數(shù)之外)的變量的作用域是整個(gè)程序,這種變量在整個(gè)程序范圍內(nèi)可引用,稱為全局變量。2.局部變量:變量定義在函數(shù)內(nèi),它們的作用域在函數(shù)內(nèi),稱為局部變量。這種變量在函數(shù)內(nèi)可以引用,程序的執(zhí)行一旦離開(kāi)相應(yīng)的函數(shù),變量失效,不可引用。3.不同層次的局部變量:如果有函數(shù)嵌套定義,內(nèi)層中定義的變量、形參的作用域只在內(nèi)層,外層定義的變量可在內(nèi)層使用。4.全局變量與局部變量:全局變量可在函數(shù)中使用。5.3.2變量和局部變量定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,定義在函數(shù)外的擁有全局作用域。局部變量只能在其被聲明的函數(shù)內(nèi)部訪問(wèn),而全局變量可以在整個(gè)程序范圍內(nèi)訪問(wèn)。調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中,如例5-3-1所示。5.3.3global語(yǔ)句如果要給全局變量在一個(gè)函數(shù)里賦值,必須使用global語(yǔ)句。global語(yǔ)句只是一個(gè)聲明語(yǔ)句。這個(gè)升了級(jí)的同名變量與外面程序中定義的同名全局變量是同一個(gè)變量,但升級(jí)后的同名變量的作用域發(fā)生了改變,能作用于全局,作為全局變量存在,而這個(gè)全局變量所在函數(shù)層的上層函數(shù)或下層函數(shù)中的同名變量的作用域不變,如例5-3-2所示。5.3.3global語(yǔ)句如在全局命名空間里定義一個(gè)變量a,再在函數(shù)內(nèi)給變量a賦值,Python會(huì)假定a是一個(gè)局部變量。然而,因?yàn)闆](méi)有在訪問(wèn)前聲明一個(gè)局部變量a,結(jié)果就會(huì)出現(xiàn)一個(gè)UnboundLocalError的錯(cuò)誤。在這種情況下,需要進(jìn)行g(shù)lobal定義,取消global語(yǔ)句的注釋就能解決這個(gè)問(wèn)題。操作實(shí)例如例5-3-3所示。5.3.3global語(yǔ)句如在全局命名空間里定義一個(gè)變量a,再在函數(shù)內(nèi)給變量a賦值,Python會(huì)假定a是一個(gè)局部變量。然而,因?yàn)闆](méi)有在訪問(wèn)前聲明一個(gè)局部變量a,結(jié)果就會(huì)出現(xiàn)一個(gè)UnboundLocalError的錯(cuò)誤。在這種情況下,需要進(jìn)行g(shù)lobal定義,取消global語(yǔ)句的注釋就能解決這個(gè)問(wèn)題。操作實(shí)例如例5-3-3所示。如不取消globala前的注釋,以上實(shí)例將報(bào)錯(cuò)5.3.4nonlocal語(yǔ)句擴(kuò)充變量的作用域范圍,還是作為局部變量存在,此時(shí)可以使用nonlocal語(yǔ)句。nonlocal語(yǔ)句是一個(gè)聲明語(yǔ)句,這個(gè)升級(jí)的變量與上一層函數(shù)中定義的同名變量是同一個(gè)變量,作用域發(fā)生了改變,如例5-3-4所示。5.4Python匿名函數(shù)匿名函數(shù)就是沒(méi)有實(shí)際名稱的函數(shù)。其主體僅僅是一個(gè)表達(dá)式,而不需要使用代碼塊。本節(jié)的目標(biāo)是理解匿名函數(shù)的含義并掌握它的用法。[學(xué)習(xí)目標(biāo)]1.了解匿名函數(shù)lambda的含義2.掌握匿名函數(shù)lambda的用法5.4Python匿名函數(shù)用lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)。這種函數(shù)得名于省略了用def聲明函數(shù)的標(biāo)準(zhǔn)步驟?!駆ambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個(gè)表達(dá)式的值,同時(shí)不能包含命令或多個(gè)表達(dá)式?!衲涿瘮?shù)不能直接調(diào)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 洗車設(shè)備運(yùn)輸合同三篇
- 2025年四川省南充市高考地理一診試卷
- 2021年云南省昭通市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年安徽省淮南市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年廣東省潮州市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年廣西壯族自治區(qū)防城港市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年吉林省松原市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 陜西省安康市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(下學(xué)期)試卷及答案
- 2024年給皂液機(jī)項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年中小型電動(dòng)機(jī)項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 貨物交接單和交接合同
- 《滅火應(yīng)急疏散預(yù)案》課件
- 【高分復(fù)習(xí)筆記】孫廣仁《中醫(yī)基礎(chǔ)理論》(第9版)筆記與考研真題詳解
- 造影劑過(guò)敏的護(hù)理
- 開(kāi)題報(bào)告:高質(zhì)量數(shù)字教材建設(shè)機(jī)制及政策研究
- PE工程師工作總結(jié)
- 以案促改心得體會(huì)
- 華東師范大學(xué)《法學(xué)導(dǎo)論(Ⅰ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 空壓機(jī)操作安全培訓(xùn)
- 自然辯證法論述題146題帶答案(可打印版)
- 工程施工日志60篇
評(píng)論
0/150
提交評(píng)論