2022-11-22
作者:麥?zhǔn)?/span>
來源:麥?zhǔn)寰幊?/span>
本期應(yīng)一位老粉絲的要求--三分鐘講清楚什么是回調(diào)函數(shù)(Callback Function)。
?
把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),這就是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。
「把上面晦澀的概念匯成一句話就是:」
?
回調(diào)函數(shù)就是一個(gè)被作為參數(shù)傳遞的函數(shù)。
?
花三行代碼寫個(gè)計(jì)算器功能的函數(shù),
def calculator(v1,v2,fn): result = fn(v1,v2) return result
但是這個(gè)計(jì)算器啥功能也沒有,1+1也不會(huì)算。
再寫個(gè)add函數(shù)求兩數(shù)之和,
def calculator(v1,v2,fn): result = fn(v1,v2) return result def add(v1,v2): return v1 + v2 # 調(diào)用calculator,計(jì)算1+1 print(calculator(1,1,add))
輸出結(jié)果:
2
上述代碼中的add函數(shù)就被稱為calculator的回調(diào)函數(shù)。
是不是還是蠻簡(jiǎn)單?
?
那還不把減、乘、除的回調(diào)函數(shù)寫了,增加印象?
?
回調(diào)函數(shù)是在一個(gè)函數(shù)中“回調(diào)函數(shù)”以參數(shù)的形式傳入,并在該函數(shù)內(nèi)部被調(diào)用。
而遞歸函數(shù)是在一個(gè)函數(shù)中,調(diào)用了自己。
還記得前幾期出現(xiàn)的高階函數(shù)么?回調(diào)函數(shù)是不是還蠻像它的?
回顧下高階函數(shù)的定義,
?
Python的高階函數(shù)其實(shí)就是接受函數(shù)為參數(shù),或者把函數(shù)作為結(jié)果返回的函數(shù)是高階函數(shù)(higher-order function)。
?
而回調(diào)函數(shù)的定義
?
回調(diào)函數(shù)就是一個(gè)被作為參數(shù)傳遞的函數(shù)。
?
有沒有感受其中的奧妙??
def calculator(v1,v2,fn): result = fn(v1,v2) return result def add(v1,v2): return v1 + v2
上面的代碼中,
calculator是高階函數(shù),而add是回調(diào)函數(shù)。
再細(xì)品下~
感謝這位粉絲的持續(xù)關(guān)注,不知道今天的文章是否對(duì)你有所幫助?
完 謝謝觀看
完 謝謝觀看
CDA認(rèn)證
關(guān)于CDA考試 最新考試安排 考試報(bào)名入口 CDA證書查詢CDA合作
CDA教育 Pearson CVA協(xié)會(huì) 電子工業(yè)出版社關(guān)注CDA
關(guān)于我們 Email:exam@cdaglobal.com 電 話:010-68454276 微 信:15311595173