作者:麥叔
來源:麥叔編程
本期應一位老粉絲的要求--三分鐘講清楚什麼是回調函數(Callback Function)。
❞
定義把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,這就是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用于對該事件或條件進行響應。
「把上面晦澀的概念彙成一句話就是:」
❝
回調函數就是一個被作為參數傳遞的函數。
❞
舉栗子花三行代碼寫個計算器功能的函數,
def calculator(v1,v2,fn): result = fn(v1,v2) return result
但是這個計算器啥功能也沒有,1 1也不會算。
再寫個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函數就被稱為calculator的回調函數。
是不是還是蠻簡單?
❝
那還不把減、乘、除的回調函數寫了,增加印象?
❞
回調函數和遞歸函數的區别回調函數是在一個函數中“回調函數”以參數的形式傳入,并在該函數内部被調用。
而遞歸函數是在一個函數中,調用了自己。
回調函數和高階函數的區别還記得前幾期出現的高階函數麼?回調函數是不是還蠻像它的?
回顧下高階函數的定義,
❝
Python的高階函數其實就是接受函數為參數,或者把函數作為結果返回的函數是高階函數(higher-order function)。
❞
而回調函數的定義
❝
回調函數就是一個被作為參數傳遞的函數。
❞
有沒有感受其中的奧妙??
def calculator(v1,v2,fn): result = fn(v1,v2) return result def add(v1,v2): return v1 v2
上面的代碼中,
calculator是高階函數,而add是回調函數。
再細品下~
最後感謝這位粉絲的持續關注,不知道今天的文章是否對你有所幫助?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!