熱線(xiàn)電話(huà):13121318867

登錄
首頁(yè)大數據時(shí)代自從搞懂了回調函數,我對Python的理解上了一個(gè)臺階
自從搞懂了回調函數掸掸,我對Python的理解上了一個(gè)臺階
2022-08-03
收藏
自從搞懂了回調函數,我對Python的理解上了一個(gè)臺階

作者:麥叔

來(lái)源:麥叔編程

本期應一位老粉絲的要求--三分鐘講清楚什么是回調函數(Callback Function)。

?

定義

把函數的指針(地址)作為參數傳遞給另一個(gè)函數,當這個(gè)指針被用來(lái)調用其所指向的函數時(shí)氓闰,這就是回調函數。回調函數不是由該函數的實(shí)現方直接調用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調用的也殖,用于對該事件或條件進(jìn)行響應。

「把上面晦澀的概念匯成一句話(huà)就是:」

?

回調函數就是一個(gè)被作為參數傳遞的函數抒钱。

?

舉栗子

花三行代碼寫(xiě)個(gè)計算器功能的函數胚宦,

def calculator(v1,v2,fn): result = fn(v1,v2) return result

但是這個(gè)計算器啥功能也沒(méi)有舅尸,1+1也不會(huì )算。

再寫(xiě)個(gè)add函數求兩數之和,

def calculator(v1,v2,fn): result = fn(v1,v2) return result def add(v1,v2): return v1 + v2 # 調用calculator腺首,計算1+1 print(calculator(1,1,add))

輸出結果:

2 

上述代碼中的add函數就被稱(chēng)為calculator的回調函數。

是不是還是蠻簡(jiǎn)單填物?

?

那還不把減、乘邻眷、除的回調函數寫(xiě)了,增加印象?

?

回調函數和遞歸函數的區別

回調函數是在一個(gè)函數中“回調函數”以參數的形式傳入,并在該函數內部被調用。

而遞歸函數是在一個(gè)函數中,調用了自己。

回調函數和高階函數的區別

還記得前幾期出現的高階函數么?回調函數是不是還蠻像它的?

回顧下高階函數的定義,

?

Python的高階函數其實(shí)就是接受函數為參數糖耸,或者把函數作為結果返回的函數是高階函數(higher-order function)。

?

而回調函數的定義

?

回調函數就是一個(gè)被作為參數傳遞的函數。

?

有沒(méi)有感受其中的奧妙??

def calculator(v1,v2,fn): result = fn(v1,v2) return result def add(v1,v2): return v1 + v2

上面的代碼中,

calculator是高階函數浦马,而add是回調函數。

再細品下~

最后

感謝這位粉絲的持續關(guān)注抢肛,不知道今天的文章是否對你有所幫助?

數據分析咨詢(xún)請掃描二維碼

最新資訊
更多
客服在線(xiàn)
立即咨詢(xún)