本文介绍Python中的"回调"(huidiao),以及回调的实现方法和步骤.
一、回调函数介绍:
回调函数就是一个通过函数名调用的函数。如果你把函数的名字(地址)作为参数传递给另一个函数,当这个参数被用来调用其所指向的函数时,我们就说这是回调函数.
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应.
上面是对回调函数的描述和解释,概念往往都显得生涉拗口,不易理解.
简单来说,我们可以这样理解回调,A实现了A1函数和A3函数,B实现了B2函数,B2函数接收一个函数名字作为参数,然后在B2内执行这个函数.
在实际应用时,A1函数调用了B2,B2函数接收函数A3作为参数,在B2内部执行A3函数,A3就是回调函数.
二、代码实现:
-callback_A.py
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_B.py
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实现回调函数的过程,当有适合的需求场景时,按上面的方法即可实现~~