- 引言
- 代码实现
函数指针的调用,即是一个通过函数指针调用的函数;
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。1
要明确的一点是,函数也可以作为函数的参数来传递,有了这个概念我们来说明回调函数到底是怎么回事。
首先至少要有 3 种类型的函数
- 主函数:相当于整个程序的引擎,调度各个函数按序执行
- 回调函数:一个独立的功能函数,如写文件函数
- 中间函数:一个介于主函数和回调函数之间的函数,登记回调函数,通知主函数,起到一个桥梁的作用2
本文实现了四种callback函数,分别是:
- 当前类调用当前类的回调函数
- 导入类调用导入类的回调函数
- 导入类调用当前类的回调函数
- 当前类调用导入类的回调函数
# CallbackComponent.py
class Callback:
def sub(a, b, _callback = None):
print("Calculate {} - {}".format(a, b))
if _callback:
_callback(a-b)
def callbackSub(n):
print("Substraction = {}".format(n))
def multi(a, b, _callback = None):
print("Calculate {} * {}".format(a, b))
if _callback:
_callback(a*b)
def callbackDiv(n):
print("Division = {}".format(n))
# CallbackExample.py
from CallbackComponent import Callback
def add(a, b, _callback = None):
print("Calculate {} + {}".format(a, b))
if _callback:
_callback(a+b)
def callbackSum(n):
print("Addition = {}".format(n))
def callbackMulti(n):
print("Multiplication = {}".format(n))
def div(a, b, _callback = None):
print("Calculate {} / {}".format(a, b))
if _callback:
_callback(a/b)
if __name__ == "__main__":
add(2, 1, callbackSum)
Callback.sub(2, 1, Callback.callbackSub)
Callback.multi(2, 1, callbackMulti)
div(2, 1, Callback.callbackDiv)
深入理解:回调函数 ↩︎
什么是回调函数?为什么要使用回调函数?如何使用回调函数? ↩︎



