一、回調函數介紹:
回調函數就是一個通過函數名調用的函數。如果你把函數的名字(地址)作為參數傳遞給另一個函數,當這個參數被用來調用其所指向的函數時,我們就說這是回調函數.
回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應.
上面是對回調函數的描述和解釋,概念往往都顯得生涉拗口,不易理解.
簡單來說,我們可以這樣理解回調,A實現了A1函數和A3函數,B實現了B2函數,B2函數接收一個函數名字作為參數,然后在B2內執行這個函數.
在實際應用時,A1函數調用了B2,B2函數接收函數A3作為參數,在B2內部執行A3函數,A3就是回調函數.
二、代碼實現

from callback_B import trade_meeting def trade_cn_us(): """大大赴美,中美貿易磋商""" print() print("---++ 准備行程,大大赴美 ++---") trade_meeting(ready_info) print("---++ 會談結束,帶喜訊回國 ++---") def ready_info(): """准備商談內容""" print() print("---++ 會議中提出要求 ++---") print() if __name__ == '__main__': trade_cn_us()

def trade_meeting(callback_func): """貿易會談並簽署協議""" print() print("---++ 與特朗普開始會談 ++---") callback_func() print("---++ 會談結束簽署協議 ++---") print()
這個例子以中美貿易磋商作為示例:
在callback_A.py中實現了赴美進行貿易磋商並回國的函數trade_cn_us(),准備商談資料(收集民眾要求)的函數ready_info().
在callback_B.py中實現了在美國召開會議並簽署協議的函數trade_meeting(callback_func).
可以理解為callback_A.py中實現的方法是在中國做的事情, callback_B.py中實現的方法是在美國做的事情(與現實的邏輯符合).
要實現赴美完成貿易磋商並回國的業務邏輯, trade_cn_us()調用了trade_meeting(callback_func), 在美國進行貿易會議時,需要調用國內准備會議資料的函數ready_info(), 用ready_info函數的名字作為參數傳遞給trade_meeting(),然后在trade_meeting()中執行.
這時候的ready_info()就是回調函數
三、運行結果
---++ 准備行程,大大赴美 ++--- ---++ 與特朗普開始會談 ++--- ---++ 會議中提出要求 ++--- ---++ 會談結束簽署協議 ++--- ---++ 會談結束,帶喜訊回國 ++---
四、兩個類之間的回調:
上面的回調是在兩個不同的python文件中實現的,在面向對象編程中,兩個不同的類之間也可以實現回調,參考代碼如下:
class China(object): """國內事項""" def trade_cn_us(self): """大大赴美,中美貿易磋商""" print() print("---++ 准備行程,大大赴美 ++---") us = American() us.trade_meeting(self.ready_info) print("---++ 會談結束,帶喜訊回國 ++---") def ready_info(self): """准備商談內容""" print() print("---++ 會議中提出要求 ++---") print() class American(object): """美國事項""" def trade_meeting(self, callback_func): """貿易會談並簽署協議""" print() print("---++ 與特朗普開始會談 ++---") callback_func() print("---++ 會談結束簽署協議 ++---") print() if __name__ == '__main__': cn = China() cn.trade_cn_us()
這就是使用Python實現回調函數的過程,當有適合的需求場景時,按上面的方法即可實現~~