回調(diào)函數(shù)在各種編程函數(shù)中都是比較常見的,回調(diào)函數(shù)的出現(xiàn)主要是為了降低函數(shù)之間調(diào)用的耦合性,從而實現(xiàn)解耦。
惠民ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
簡單來說,如果一個函數(shù)可以作為被傳遞就稱這個函數(shù)為回調(diào)函數(shù)。比如:func1(func2()),那么func2就是回調(diào)函數(shù)。此時,只需要知道func2這個函數(shù)的功能是什么,在執(zhí)行func1時調(diào)用func2就可以,無須關(guān)心func2的實現(xiàn)過程是什么。
【閱讀全文】
def func1(func2):
func2()
def func2():
print('我是func2函數(shù)')
func1(func2)
如此,像上面這樣執(zhí)行就可以完成一個簡單的回調(diào)函數(shù)的使用。
通過這樣的使用還可以實現(xiàn)一些稍微復(fù)雜的回調(diào)。
def func(func3,func4):
print(func3() + func4())
def func3():
return 5
def func4():
return 3
func(func3,func4)
除了上面的使用實例以外,回調(diào)函數(shù)還可以使用帶參數(shù)的傳遞形式。
def ser1(a):
return a * 100
def ser2(b):
return b * 20
def ser(ser1,a,ser2,b):
print(ser1(a) + ser2(b))
ser(ser1,1,ser2,1)
在執(zhí)行調(diào)用ser(ser1,a,ser2,b)時,其中a對應(yīng)的是ser1回調(diào)函數(shù)的參數(shù)。b對應(yīng)的是ser2回調(diào)函數(shù)的參數(shù),這樣就實現(xiàn)攜帶參數(shù)的回調(diào)函數(shù)被調(diào)用的情況。
還有一種攜帶多個參數(shù)的使用情況,寫法也很nice。
def exec(fn,args,callback):
result = fn(*args)
callback(result)
def add(a,b):
return a + b
def show(result):
print("結(jié)果是:",result)
exec(add,(10,4),show)
執(zhí)行exec(add,(10,4),show)時,add作為第一個回調(diào)函數(shù)被執(zhí)行。然后,將add函數(shù)的返回結(jié)果作為第二個回調(diào)函數(shù)的參數(shù)調(diào)用show回調(diào)函數(shù)。
最后用更專業(yè)的術(shù)語來理解一下,回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當(dāng)這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。
【往期精選】
解決pyinstaller打包過程中外部資源無法加載的問題 ...
pyqt5做了一個二維碼生成器,已打包成exe可執(zhí)行程序...
如何在控制臺實現(xiàn)一個數(shù)據(jù)管理系統(tǒng)(包括MYSQL數(shù)據(jù)庫的增刪改查)
自制文檔格式轉(zhuǎn)換器,支持 .txt/.xlsx/.csv格式轉(zhuǎn)換...
PyPDF2如何實現(xiàn)按照PDF頁碼提取后并另存為PDF格式文件?