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实现回调函数的过程,当有适合的需求场景时,按上面的方法即可实现~~

原文地址:https://www.cnblogs.com/maplethefox/p/11882221.html