回调与事件驱动
回调函数有比较重要的意义:它在是事件驱动的体现
我们试想1个场景,如果我们触发了某个事件,比如点击事件
那末只要给这个点击事件绑定1个或多个处理事件,也就是回调函数
我们就能够在点击事件被触发后(结束后)调用相应的方法来处理后事
比如
普通回调
#在函数中使用回调
def click(callback):
eval(callback)() #eval()可以讲字符串解析成可以履行的代码
def handle:
print '在点击事件结束后调用该函数,进行处理,比如弹出框alert()'
if(__name__ == '__main__'):
fun1('fun2')
上面那个场景很明显是摹拟我们平常使用阅读器是的1个场景:
当我们点击某个按钮是,可能会弹出1个正告框或确认框,这可以理解为
点击事件触发后, 调用了这个处理函数,这个函数的功能就是弹出1个正告框或确认框
从事件驱动来说: 点击事件的发送驱动这handle处理程序的触发
恩,这样会不会比较清晰?
类中使用回调
由于python从1开始就是面向对象的定位,所以作为python 程序员, 可能会面对以下的场景:
我们创建1个实例, 我们传入数据给这个实例,最后得到我们我们想要的结果,比如我们传给
1个名为 getCsdnTitle的对象1个url(1篇csdn博客的url),我们希望最后得到这篇文章的文字内容,
我们是否是首先地通过http要求获得该url 对应的html内容,给这个方法命名为fetch_url()
然后我们需要对html进行处理,比如过滤,
正则匹配,字符串处理,得到我们想要的文字内容,给这个方法命名为
get_content()
这样这个对象内部就需要经过fetch_url 和 get_content 两个方法来得到最后我们需要的结果,而且二者是有明显的
顺序区分的,我们可以理解为调用完fetch_url 后回调 get_content 方法,大家可能会说,这是否是麻烦了很多,
其实,大家要知道,实际开发中这条履行链是可能会很长的,通过回调,我们就能够指定在某个步骤履行完后我们要进行怎样样的
操作,这样逻辑上和理解上都会很有效力
下面举个小例子演示下在类中实现回调的方法
#在类中使用回调方法
#在函数中使用回调
def click(callback):
eval(callback)() #eval()可以讲字符串解析成可以履行的代码
def handle:
print '在点击事件结束后调用该函数,进行处理,比如弹出框alert()'
if(__name__ == '__main__'):
fun1('fun2')