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 相关文章推荐
python获取图片颜色信息的方法
Mar 18 Python
python实现读取并显示图片的两种方法
Jan 13 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Python格式化日期时间操作示例
Jun 28 Python
python 实现数字字符串左侧补零的方法
Dec 04 Python
python 多个参数不为空校验方法
Feb 14 Python
解决Python中回文数和质数的问题
Nov 24 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
Python常用数字处理基本操作汇总
Sep 10 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
asyncio异步编程之Task对象详解
Mar 13 Python
深入理解pytorch库的dockerfile
Jun 10 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
2011/06/02 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
解决出现SoapFault (looks like we got no XML document)的问题
2017/06/24 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
阻止子元素继承父元素事件具体思路及实现
2013/05/02 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vant实现购物车功能
2020/06/29 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
Python with用法实例
2015/04/14 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
咖啡馆创业计划书
2014/01/26 职场文书
表扬信范文
2015/05/04 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python