python 回調函數(Callback)


轉載: 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM