1、什么是回调函数,感觉好复杂??存在的意义是什么?
回调函数:通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
如下面的例子1:来源 https://www.cnblogs.com/hainan-zhang/p/6222552.html
def clean1(times): """ 就假装扫地 param times :次数 return None """ print(‘已完成扫地次数:‘,times) def clean2(times): """ 假装洗抽油烟机 param times:次数 return: None """ print(‘已洗抽油烟机次数:‘,times) def call_clean(times,function_name): """ 这个很重要,就是家政公司的业务系统,要啥业务都得在这说 这个是实现回调函数的核心 param times:次数 param function_name:回调函数名 return:调用的函数结果 """ return function_name(times) call_clean(10,clean2) #call_clean(10,clean2)
这个例子介绍回调函数的使用,没有说明回调函数存在的意义?这样写还不如直接调用clean2函数10次。
下面在网上找的另外一个,例子2:http://blog.csdn.net/ma52103231/article/details/61432120
看着有点懵,难度大,换一个
class Callback: def __init__(self,instance,function_name): self.instance=instance self.function_name=function_name def action(self,params): self.instance.__getattribute__(self.function_name)(params) class Test: def __init__(self): self.clb=None def register(self,clb): self.clb=clb def do_test(self): params=[] self.clb.action(params) class Api: def __init__(self,test_instance): test_instance.register(Callback(self,self.function.__name__)) def function(self,params): print(‘function‘) t=Test() a=Api(t) t.do_test() #function
例子3:http://blog.csdn.net/ma52103231/article/details/61432120