回調(diào)函數(shù)在各種編程函數(shù)中都是比較常見的,回調(diào)函數(shù)的出現(xiàn)主要是為了降低函數(shù)之間調(diào)用的耦合性,從而實現(xiàn)解耦。
簡單來說,如果一個函數(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)一些稍微復雜的回調(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)
#學習中遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流群:711312441
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ù)。文章來源:http://www.zghlxwxcb.cn/news/detail-786136.html
最后用更專業(yè)的術(shù)語來理解一下,回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-786136.html
到了這里,關(guān)于python回調(diào)函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!