因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。
在学习python解析XML的时候看到这样一段话:
当时就犯了老毛病,被一个不是很知道的名词引起了兴趣--回调函数,后搜索资料学习了一下,感觉需要写个什么来记录一下顺便加深映象,此处引用了不少各位神的经验,篇幅所限就不一一感谢了。
回调函数(callback),百度百科的解释是这样的:
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
可能是学识确实有限,看起来比较懵逼。然后去找了一些通俗易懂的解释--就好像是家政服务,家政公司提供了一个API:打扫房子,而且还能提供各种打扫,比如扫地,擦家具,清洁马桶等等,我们把打扫房子看做库函数,那么打扫屋子的方式呢是你自己决定的,你要怎么打扫就要预约并执行那种回调函数,你预约并执行服务的行为叫做登记回调函数。下面写个看起来很low的实现以便理解
1 # coding=utf-8 2 # 请不要在意为毛要清洁这么多次 3 4 5 def clean1(times): 6 """ 7 就假装是扫地吧,这种函数命名方式,千万别学习 8 :param times: 次数 9 :return: None 10 """ 11 print '已完成扫地次数:', str(times) 12 13 14 def clean2(times): 15 """ 16 默默的装作洗抽油烟机 17 :param times: 次数 18 :return: None 19 """ 20 print '已洗抽油烟机次数', str(times) 21 22 23 def call_clean(times, function_name): 24 """ 25 这个很重要,这个就是家政公司的业务系统,要啥业务都得在这说 26 这个是实现回调函数的核心 27 :param times:次数 28 :param function_name:回调函数名 29 :return:调用的函数结果 30 """ 31 return function_name(times) 32 33 if __name__ == '__main__': 34 call_clean(100, clean2) # 给我洗100次抽油烟机,好吧,很变态
最后粘贴一段百度百科上面写的回调函数的意义:传送门
好吧,犯懒了
最后说一句,看到这应该懂了的一句话:
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。