python 回调函数和回调方法的实现分析


Posted in Python onMarch 23, 2016

回调与事件驱动
回调函数有比较重要的意义:它在是事件驱动的体现
我们试想一个场景,如果我们触发了某个事件,比如点击事件
那么只要给这个点击事件绑定一个或多个处理事件,也就是回调函数
我们就可以在点击事件被触发后(结束后)调用相应的方法来处理后事
比如

普通回调

#在函数中使用回调
def click(callback):
  eval(callback)() #eval()可以讲字符串解析成可以执行的代码

def handle:
  print '在点击事件结束后调用该函数,进行处理,比如弹出框alert()'

if(__name__ == '__main__'):
  fun1('fun2')

上面那个场景很显然是模拟我们日常使用浏览器是的一个场景:
当我们点击某个按钮是,可能会弹出一个警告框或者确认框,这可以理解为
点击事件触发后, 调用了这个处理函数,这个函数的功能就是弹出一个警告框或者确认框
从事件驱动来讲: 点击事件的发送驱动这handle处理程序的触发
恩,这样会不会比较清晰?

类中使用回调
因为python从一开始就是面向对象的定位,所以作为python 程序员, 可能会面对如下的场景:
我们创建一个实例, 我们传入数据给这个实例,最后得到我们我们想要的结果,比如我们传给
一个名为 getCsdnTitle的对象一个url(一篇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')
Python 相关文章推荐
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
Python中用pycurl监控http响应时间脚本分享
Feb 02 Python
python实现连接mongodb的方法
May 08 Python
python如何对实例属性进行类型检查
Mar 20 Python
Python3利用print输出带颜色的彩色字体示例代码
Apr 08 Python
Python3.5运算符操作实例详解
Apr 25 Python
Python简单基础小程序的实例代码
Apr 28 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 #Python
python各种语言间时间的转化实现代码
Mar 23 #Python
Eclipse中Python开发环境搭建简单教程
Mar 23 #Python
在windows系统中实现python3安装lxml
Mar 23 #Python
Python使用Redis实现作业调度系统(超简单)
Mar 22 #Python
python编写简单爬虫资料汇总
Mar 22 #Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 #Python
You might like
php 破解防盗链图片函数
2008/12/09 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
2011/10/09 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
python requests使用socks5的例子
2019/07/25 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python matplotlib实时画图案例
2020/04/23 Python
如何使用python切换hosts文件
2020/04/29 Python
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
法定代表人授权委托书
2014/09/19 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2014年医院工作总结
2014/11/20 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
太空授课观后感
2015/06/17 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
Python软件包安装的三种常见方法
2022/07/07 Python