轉載: https://www.zhihu.com/question/19801131/answer/27459821
什么是回調函數?我們繞點遠路來回答這個問題。編程分為兩類:系統編程(system programming)和應用編程(application programming)。所謂系統編程,簡單來說,就是編寫庫;而應用編程就是利用寫好的各種庫來編寫具某種功用的程序,也就是應用。系統程序員會給自己寫的庫留下一些接口,即API(application programming interface,應用編程接口),以供應用程序員使用。所以在抽象層的圖示里,庫位於應用的底下。
當程序跑起來時,一般情況下,應用程序(application program)會時常通過API調用庫里所預先備好的函數。但是有些庫函數(library function)卻要求應用先傳給它一個函數,好在合適的時候調用,以完成目標任務。這個被傳入的、后又被調用的函數就稱為回調函數(callback function)。
even.py
:
#回調函數1
#生成一個2k形式的偶數
def double(x):
return x * 2
#回調函數2
#生成一個4k形式的偶數
def quadruple(x):
return x * 4
callback_demo.py
:
from even import *
#中間函數
#接受一個生成偶數的函數作為參數
#返回一個奇數
def getOddNumber(k, getEvenNumber):
return 1 + getEvenNumber(k)
#起始函數,這里是程序的主函數
def main():
k = 1
#當需要生成一個2k+1形式的奇數時
i = getOddNumber(k, double)
print(i)
#當需要一個4k+1形式的奇數時
i = getOddNumber(k, quadruple)
print(i)
#當需要一個8k+1形式的奇數時
i = getOddNumber(k, lambda x: x * 8)
print(i)
if __name__ == "__main__":
main()
運行callback_demp.py
,輸出如下:
3
5
9
參考:
回調函數(callback)是什么? https://www.zhihu.com/question/19801131/answer/27459821
python 回調函數(Callback) https://blog.csdn.net/qq_21210467/article/details/80706277