函數(shù)作用域和匿名_第1頁(yè)
函數(shù)作用域和匿名_第2頁(yè)
函數(shù)作用域和匿名_第3頁(yè)
函數(shù)作用域和匿名_第4頁(yè)
函數(shù)作用域和匿名_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Python基礎(chǔ)課教室講師:無(wú)名時(shí)間:2018年5月教學(xué)監(jiān)督熱線免責(zé)聲明:如果本課程內(nèi)有任何內(nèi)容侵害了您的權(quán)益,請(qǐng)您及時(shí)聯(lián)系我們潭州教育全球教學(xué)服務(wù)中心熱線:教學(xué)監(jiān)督熱線01020304必須掌握:函數(shù)的定義和函數(shù)的調(diào)用必須掌握:return的作用必須掌握:三種參數(shù)的定義了解講過(guò)的內(nèi)置函數(shù)知識(shí)點(diǎn)回顧本節(jié)知識(shí)點(diǎn)01.匿名函數(shù)02.函數(shù)作用域03.閉包04.遞歸和回調(diào)函數(shù)教學(xué)監(jiān)督熱線第一部分匿名函數(shù)教學(xué)監(jiān)督熱線思考01上節(jié)課的filter函數(shù),可以過(guò)濾出列表中大于3的數(shù)據(jù),但是使用都需要提前定義一個(gè)函數(shù),有沒(méi)有更加簡(jiǎn)便的方式呢?匿名函數(shù)lambda0102filter(lambdax:x>10,li)語(yǔ)法規(guī)則:lambda參數(shù):表達(dá)式簡(jiǎn)單函數(shù)函數(shù)調(diào)用提高開(kāi)發(fā)效率匿名函數(shù)的合理利用能夠讓那個(gè)代碼更加簡(jiǎn)潔類似于filter、map等函數(shù)里面,可以使用匿名函數(shù)來(lái)處理簡(jiǎn)單的函數(shù),可以不用使用def定義一個(gè)函數(shù),使用匿名函數(shù)即可匿名函數(shù)應(yīng)用場(chǎng)景匿名函數(shù)總結(jié)必須掌握:匿名函數(shù)的用法熟悉匿名函數(shù)的使用第二部分函數(shù)作用域教學(xué)監(jiān)督熱線思考01在函數(shù)里面也有可以定義變量,那函數(shù)里面的變量名如果和函數(shù)外面的變量名重名,會(huì)相互影響嗎?示例03040102外部不能訪問(wèn)函數(shù)內(nèi)部變量:deffun1(): x=1

returnx函數(shù)內(nèi)部能夠訪問(wèn)函數(shù)外部變量:x=123deffun2():

print(x)

returnx+1函數(shù)里面不能修改函數(shù)外部變量:x=123deffun3(): x=x+1

returnx函數(shù)里面和函數(shù)外部變量名相同:x=123print(x,id(x))deffun4():

x=456

print(x,id(x))

x+=1

returnxglobal和nonlocal01

02

global(全局變量):x=123deffun1():

globalx x+=1

returnxnonlocal(局部變量):deffun2(): x=123

deffun3():

nonlocalx x+=1

returnx

returnfun3()global和nonlocal全局變量局部變量globalnonlocal函數(shù)作用域函數(shù)內(nèi)部globalnonlocal在函數(shù)嵌套函數(shù)的情況下,同樣也有函數(shù)作用域的問(wèn)題,但是python3中提供了方便,只需要使用nonlocal就可以在里層函數(shù)內(nèi)部修改外部函數(shù)變量函數(shù)內(nèi)部如果需要改變?nèi)肿兞?,就需要使用global修飾變量函數(shù)內(nèi)部的變量,作用域只在函數(shù)內(nèi)部,函數(shù)內(nèi)部不可以直接更改函數(shù)外部的變量函數(shù)作用域總結(jié)必須掌握:全局變量和局部變量的概念必須掌握:global和nonlocal第三部分閉包教學(xué)監(jiān)督熱線思考0102函數(shù)里面可以再定義函數(shù),那函數(shù)里面定義的函數(shù)可以在外面調(diào)用嗎?如果可以的話,要怎么做呢?閉包0102

內(nèi)嵌函數(shù):deffun1():

print('fun1()在被調(diào)用')

deffun2():

print('fun2()在被調(diào)用') fun2()閉包:deffx(x): x+=1

deffy(y):

returnx*y

returnfy閉包閉包是函數(shù)里面嵌套函數(shù),外層函數(shù)返回里層函數(shù),這種情況稱之為閉包閉包是概念,不是某種函數(shù)類型,和遞歸的概念類似,就是種特殊的函數(shù)調(diào)用閉包可以得到外層函數(shù)的局部變量,是函數(shù)內(nèi)部和函數(shù)外部溝通的橋梁閉包總結(jié)必須掌握:閉包的形式和定義第四部分遞歸和回調(diào)函數(shù)教學(xué)監(jiān)督熱線思考01函數(shù)里面可以自身調(diào)用自身嗎?遞歸0102階乘:deffactorial(n):

ifn==1:

return1

returnfactorial(n-1)*n遞歸中可以函數(shù)自身調(diào)用自身,但是使用時(shí)類似于條件循環(huán)一樣,要有遞歸的終止條件遞歸應(yīng)用使用遞歸時(shí),常??梢宰尨a更加簡(jiǎn)潔遞歸會(huì)占用比較多的內(nèi)存,當(dāng)遞歸次數(shù)比較多時(shí),性能就會(huì)降低,因此不建議多使用遞歸回

調(diào)0102示例:defchoice(callback,ch):

ifch:

callback()

else:

print('OK')defplay():

print('hahahaha')choice(play,1)回調(diào)函數(shù):

自身是一個(gè)函數(shù),只是被傳入到另一個(gè)函數(shù)當(dāng)中,供其調(diào)用回調(diào)函數(shù)不一定會(huì)被調(diào)用,是否調(diào)用由被傳入函數(shù)的內(nèi)部邏輯決定遞歸總結(jié)必須掌握:遞歸和回調(diào)函數(shù)的定義熟悉遞歸和回調(diào)函數(shù)的使用本節(jié)知識(shí)點(diǎn)回顧必須掌握:匿名函數(shù)的定義必須掌握:全局變量和局部變量的概念必須掌握:global和nonlocal必須掌握:閉包、遞歸、回調(diào)

作業(yè)練習(xí)一

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論