python回調函數


一、回調函數介紹:

回調函數就是一個通過函數名調用的函數。如果你把函數的名字(地址)作為參數傳遞給另一個函數,當這個參數被用來調用其所指向的函數時,我們就說這是回調函數.

回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應.

上面是對回調函數的描述和解釋,概念往往都顯得生涉拗口,不易理解.

簡單來說,我們可以這樣理解回調,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()
callback_A.py

 

def trade_meeting(callback_func):
    """貿易會談並簽署協議"""
    print()
    print("---++  與特朗普開始會談  ++---")
    callback_func()
    print("---++  會談結束簽署協議  ++---")
    print()
-callback_B.py

這個例子以中美貿易磋商作為示例:

在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實現回調函數的過程,當有適合的需求場景時,按上面的方法即可實現~~

 

 


免責聲明!

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



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