如何理解回调函数,回调函数用法及特点,如何理解回调函数,回调函数用法和特点

  如何理解回调函数,回调函数用法及特点,如何理解回调函数,回调函数用法和特点

  回调函数到底是什么,困扰我很久了~

  在知乎上看到几位大神的帖子,恍然大悟。

  作者:号体

  链接:https://www.zhihu.com/question/19801131/answer/27459821

  来源:知乎

  作者:cmdy

  链接:https://www.zhihu.com/question/19801131/answer/13005983

  来源:知乎

  首先要明确的一点是,函数也可以作为函数的参数来传递

  好了,有了这个概念,我们来解释一下回调函数是怎么回事。

  首先至少要有 3 种类型的函数

  主函数:相当于整个程序的引擎,它调度每个函数按顺序执行。

  回调函数:一个独立的函数,比如写文件的函数。

  中间函数:介于主函数和回调函数之间的函数,注册回调函数,通知主函数,起桥梁作用。

  接下来,让我们看一下示例代码:

  #!/usr/excited bee/env python 3 #-*-编码:UTF-8-*-#回调函数1def callback1(x): return x * 2 #回调函数2def callback2(x): return x ** 2#中间函数def middle(x,C): return100func (x) #主函数def main (): x=1a=middle (x,callback1) print (a) b=middle (x,callback2) print (b) c=middle (x,x:x2)print(C)main

  102101103代码看懂以后我们接下来分析一下代码的逻辑

  首先,我们在执行主函数的过程中需要用到一个函数x * 2,callback1函数提供了这个函数,所以我们把这个函数叫做回调函数(至于为什么叫“回调函数”,不能叫别的?其实只是一个假名。你也可以称之为“极客专属功能”,但接下来你会问为什么叫“极客专属功能”。它有名字!所以称之为“回调函数”是乌龟的屁股:规定!)。

  这个时候我们的主函数就会调用它,但是有时候在开发过程中,会遇到写硬盘的操作。这时,为了避免程序的阻塞,我们需要使用异步I/O。就是你先写着玩,爸爸去做别的了。当你完成的时候请让我知道。由于这种机制,必须有一个“地方”来注册回调函数并通知主函数的执行。这个地方就是中间功能。

  有上述内容我们就可以推导出回调函数执行的流程了:

  主函数需要调用回调函数。

  中间函数注册回调函数

  触发回调函数事件

  调用回调函数

  响应回调事件

  回调实际上有两种:阻塞回调和延迟回调也可称为同步回调和异步回调。

  两者的区别在于:

  在阻塞回调中,回调函数必须在主函数返回之前被调用。

  在延迟回调中,回调函数可能在初始函数返回后被调用。

  上面的例子是同步回调,异步调用需要多进程、多线程、协程的概念。下次再说吧。

  最后用一个例子说明一下到底说明是回调函数:

  你去商店买东西,但是你想要的东西没货了,所以你把你的电话号码留给了店员。过了几天,店员给你打电话,然后你接到电话,去店里取货。

  在这个例子中,你的电话号码被称为回拨功能。如果你把手机留给店员,这叫注册回拨功能。当商店稍后有货时,这称为触发回调事件。店员给你打电话,这叫呼叫回拨功能。当你去商店取货时,这叫做响应回调事件。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: