python 回調函數(Callback)

轉載: https://www.zhihu.com/question/19801131/answer/27459821python

什麼是回調函數?咱們繞點遠路來回答這個問題。編程分爲兩類:系統編程(system programming)和應用編程(application programming)。所謂系統編程,簡單來講,就是編寫庫;而應用編程就是利用寫好的各類庫來編寫具某種功用的程序,也就是應用。系統程序員會給本身寫的庫留下一些接口,即API(application programming interface,應用編程接口),以供應用程序員使用。因此在抽象層的圖示裏,庫位於應用的底下。程序員

當程序跑起來時,通常狀況下,應用程序(application program)會時常經過API調用庫裏所預先備好的函數。可是有些庫函數(library function)卻要求應用先傳給它一個函數,好在合適的時候調用,以完成目標任務。這個被傳入的、後又被調用的函數就稱爲回調函數(callback function)。web

even.py編程

#回調函數1
#生成一個2k形式的偶數
def double(x):
    return x * 2
    
#回調函數2
#生成一個4k形式的偶數
def quadruple(x):
    return x * 4

callback_demo.pyapp

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,輸出以下:svg

3
5
9

參考:
回調函數(callback)是什麼? https://www.zhihu.com/question/19801131/answer/27459821
python 回調函數(Callback) https://blog.csdn.net/qq_21210467/article/details/80706277函數