什么是回调函数?

在python中一些变量都是对象,包括函数,函数名就是函数对象的变量名称,那么是否要将函数名变量做为参数传给其它函数呢? 答案是肯定的。
当函数B的函数名做为参数,传给别函数A时,并且A能够接受处理。 这样的函数B就是1个回调函数。

回调函数最初来自于C语言, 用函数指针做为另1个函数的参数,可以任意更改回调函数,只要这些函数参数数量与类型相同。 而python是把函数名做参数,相当于C++中的地址引用,主函数也可以更换回调函数。
现在,回调函数已成了1个编程的设计模式pattern, 在各类语言中都很流行。

回调函数的适用场景
回调函数主要用于对当前函数运行前,对数据进行预处理,如在图像识别的神经网络模型图片数据处理函数之前,可以通过回调函数对图片数据进行预处理,如统一图片尺寸,对图片命名进行规范化等操作。
或者处理大文件时,使用回调函数,避免读取两次,而且可以使用生成器,即使数据长度未知,也可以用回调函数。

所以正确地使用回调函数,可以提高代码的性能与可读性。

回调函数实例

需求: 对1个数据列表进行求和,求和之前,希望将对列表元素进行四舍五入,并剔除小于10,或大于65535的数据。 这里我们添加回调函数来进行数据清洗。

第1步,定义回调函数 clean_data()

def clean_data(input_list):# 对列表元素四舍五入xlist = list(map(lambda x: round(x), input_list))# 对列表元素过滤xlist = list(filter(lambda x: x > 10 and x < 65535, xlist))print("回调函数处理后列表长度:", len(xlist))return xlist

第2步,定义主函数 total(),最后1个参数为回调函数

注意,主函数的最后1个参数为回调函数名,其它参数个数及类型要与回调函数相同,否则会报错。 定义时的形参名不必与回调函数名称相同。
在主函数体内,使用回调函数进行数据清理, cb_data = cb(data)

def total(data, cb):# 调用回调函数cb_data = cb(data)return reduce(lambda x, y: x+y, cb_data)

第3步 实际调用主函数

将回调函数名做为实参传入total() 函数,
print("列表数值总和: ", total(demo_data, clean_data))

运行程序,输出为:

原始列表长度: 100
回调函数处理后列表长度: 95
列表数值总和:  3223626

可以看出, total 调用了clean_data() , 而且 total定义时使用的参数名称为cb, 而不是clean_data. 所以你还可以更换、修改回调函数来添加新功能,而不需要改动主函数的代码,这的确很方便。

完整代码

# 验证 call back 回调函数
import random
from functools import reducedef clean_data(input_list):# 对列表元素四舍五入xlist = list(map(lambda x: round(x), input_list))# 对列表元素过滤xlist = list(filter(lambda x: x > 10 and x < 65535, xlist))print("回调函数处理后列表长度:", len(xlist))return xlistdef total(data, cb):# 调用回调函数cb_data = cb(data)return reduce(lambda x, y: x+y, cb_data)demo_data = [random.uniform(1, 70000) for i in range(0, 100)]
print("原始列表长度:", len(demo_data))
print("列表数值总和: ", total(demo_data, clean_data))

Python 回调函数的实现相关推荐

  1. python回调函数实例详解_Python回调函数用法实例详解

    本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...

  2. python回调接口_三个案例带你了解python回调函数

    原标题:三个案例带你了解python回调函数 回调函数: 把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用 ...

  3. Python回调函数的实现

    Python回调函数的实现 一.回调函数介绍: 回调函数就是一个通过函数名调用的函数.如果你把函数的名字(地址)作为参数传递给另一个函数,当这个参数被用来调用其所指向的函数时,我们就说这是回调函数. ...

  4. python 回调函数(Callback)

    什么是回调函数?我们绕点远路来回答这个问题.编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是编写 ...

  5. Python回调函数用法实例

    什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是 ...

  6. python mount回调函数_为python回调函数设置argtype

    我对Python很在行,所以希望我能正确地表达这个问题.在 整个问题涉及从Python调用C例程.我可以通过把一些相关的问题/答案凑在一起来接近,但我似乎不能把事情安排得很好.有两个方面:第一个是用指 ...

  7. python 回调函数

    在之前学爬虫的时候,就遇到了这个问题,当时没弄明白.现在明白了,特来记录. 首先看一个小例子,后面会附上知乎一位大神的解说. def a(i):""""回调函数 ...

  8. Python——回调函数(callback)

    摘要 主要是介绍python 的回调函数callback. 什么是回调函数 当程序运行是,一般情况下,应用程序会时常通过API调用库里所预先备好的函数.但是有些库函数却要求应用先传给它一个函数,好在合 ...

  9. python 回调函数的使用_如何在python中使用回调函数?

    我想知道如何正确使用 Python 2.7回调函数. 我在我的代码中有一些来自Cherrypy auth示例的回调函数. (这些回调会返回一个可以评估为True或False的函数,具体取决于登录的用户 ...

最新文章

  1. Aho-Corasick 多模式匹配算法(AC自动机) 的算法详解及具体实现
  2. MFC中设备描述表dc的使用
  3. ESLint里的规则教会我,无规矩 不编程
  4. python中矩阵拼接_numpy实现合并多维矩阵、list的扩展方法
  5. 网站维护:利用iptables和ipset屏蔽恶意IP的访问
  6. 保存页面供以后使用Firefox的阅读列表扩展
  7. ajax如何提交多表单的值_25 HTML5表单基本控件(二)
  8. 一文搞懂MySQL-8.0 redo优化
  9. python 微服务框架_Python微服务架构chili_chicken
  10. 用python做自动化测试仪器_使用python进行windows自动化测试(1)
  11. 三星Galaxy S22 Ultra渲染图曝光:有Note系列的味道
  12. bzoj 3209 花神的数论题 —— 数位DP
  13. Atitit 团队远景规划与目标总结 v4 目录 1. 使命和组织宗旨 1 1.1. 组织使命 1 1.2. 核心价值观 1 2. 行政目标体系 2 2.1. 打造体系齐全的复合体 2 2.2. 人
  14. pythonpm2.5空气质量提醒_Python实现抓取城市的PM2.5浓度和排名
  15. ES6、7学习笔记(尚硅谷)-5-箭头函数
  16. MAC使用RZ SZ指令实现本地与远程服务器之间文件上传与下载
  17. matlab:lena图像在空域和频域的均匀滤波
  18. 10款推荐系统模拟器汇总
  19. 最全汇总GAN网络及其各种变体(附论文及代码实现)
  20. python aes new_python AES 加密

热门文章

  1. 象征性消费行为与体验营销
  2. 2021-11-17 2021年施工员-市政方向-岗位技能(施工员)考试资料及施工员-市政方向-岗位技能(施工员)复审模拟考试
  3. HTTP请求中Get、Post与后台参数接收的分析
  4. 转载 高德瓦片Url解析
  5. oracle cusor游标,oracle 游标cursor
  6. iOS友盟分享的一些问题
  7. 西门子fifo_STEP7 FIFO功能实现
  8. (翻译)Attacking Interoperability(攻击互操作性)in Black Hat 2009 研究报告
  9. Tsu,Tco,Th,Tpd的概念
  10. 计算机一级wps选择题必背知识点,全国计算机一级《WPS》选择题题库及答案2016.doc...