首页 > 编程语言 >python回调函数

python回调函数

时间:2024-01-13 16:35:03浏览次数:34  
标签:func2 ser2 函数 ser1 python 回调 def

回调函数在各种编程函数中都是比较常见的,回调函数的出现主要是为了降低函数之间调用的耦合性,从而实现解耦。

简单来说,如果一个函数可以作为被传递就称这个函数为回调函数。

比如:func1(func2()),那么func2就是回调函数。此时,只需要知道func2这个函数的功能是什么,在执行func1时调用func2就可以,无须关心func2的实现过程是什么。

def func1(func2):
    func2()

def func2():
    print('我是func2函数')

func1(func2)

如此,像上面这样执行就可以完成一个简单的回调函数的使用。

通过这样的使用还可以实现一些稍微复杂的回调。

def func(func3,func4):
    print(func3() + func4())

def func3():
    return 5

def func4():
    return 3

func(func3,func4)

除了上面的使用实例以外,回调函数还可以使用带参数的传递形式。

def ser1(a):
    return a * 100

def ser2(b):
    return b * 20

def ser(ser1,a,ser2,b):
    print(ser1(a) + ser2(b))

ser(ser1,1,ser2,1)

在执行调用ser(ser1,a,ser2,b)时,其中a对应的是ser1回调函数的参数。b对应的是ser2回调函数的参数,这样就实现携带参数的回调函数被调用的情况。

还有一种携带多个参数的使用情况,写法也很nice。

def exec(fn,args,callback):
    result = fn(*args)
    callback(result)

def add(a,b):
    return a + b

def show(result):
    print("结果是:",result)
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
exec(add,(10,4),show)

执行exec(add,(10,4),show)时,add作为第一个回调函数被执行。然后,将add函数的返回结果作为第二个回调函数的参数调用show回调函数。

最后用更专业的术语来理解一下,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

标签:func2,ser2,函数,ser1,python,回调,def
From: https://www.cnblogs.com/Pythonmiss/p/17962512

相关文章

  • 十行python代码实现文件去重,去除重复文件的脚本
    1.导入依赖'''导入依赖'''frompathlibimportPathimportfilecmp2.函数说明filecmp.cmp(path1,path2,shallow=True)path1/path2:待比较的两个文件路径。shallow:默认为True,即只比较os.stat()获取的元数据(创建时间,大小等信息)是否相同,设置为False的话,在对比文件的......
  • python经典有序序列的list列表推导式
    生成一个数据列表#初始化一个列表list_1=[]#使用循环生成一个列表数据forvalinrange(0,20,1):#加入集合list_1.append(val)#打印列表数据print(list_1)#[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]使用列表推导式生......
  • Shell编程自动化之if、for、while和函数
    一、if语句1.单分支格式if[条件判断式];then当条件判断成立时,执行的命令内容fiif[条件判断式]then当条件判断成立时,执行的命令内容fi2.双分支格式if[条件判断式];then当条件判断成立时,执行的命令内容else当条件判断......
  • Python 潮流周刊第 35 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-01-13-weekly以下是本期摘要:......
  • [Python学习记]个人感受(持续更新)
    ------24/01/13------ 大家好,到目前为止我已经学习到if条件语句的使用了,准备学习循环语句,if语句学的薄浅还得多加练习实际应用!关于if的应用我自主设计了几个程序,希望大佬可以多加指点 ------23/11/13------ 大家好,我是小县城高中的一名学生 在我初中时期就已经知道主......
  • 函数计算域名调试web应用
    函数计算域名调试web应用如果没有域名的话,可以利用一个小技巧来绕过阿里云对于函数计算域名使用的限制,从而直接使用阿里云的域名进行访问先进入如下页面复制公网访问地址​​然后安装可以修改响应头的浏览器插件,例如https://github.com/FirefoxBar/HeaderEditor,然后进行类......
  • 【flink番外篇】9、Flink Table API 支持的操作示例(7)- 表的join操作(内联接、外联接以
    文章目录Flink系列文章一、maven依赖二、示例:表的join操作(内联接、外联接以及联接自定义函数等)本文介绍了表的join主要操作,比如内联接、外联接以及联接自定义函数等。本文除了maven依赖外,没有其他依赖。一、maven依赖本文maven依赖参考文章:【flink番外篇】9、FlinkTableAPI支......
  • RK3568 学习笔记 : 解决 linux_sdk 编译 python 版本报错问题
    前言最近买了【正点原子】的RK3568开发板,下载了开发板的资料,包括LinuxSDK,这个LinuxSDK占用的空间比较大,扩展了一下VM虚拟机ubuntu20.04的硬盘空间,编译才正常通过。编译RK3568LinuxSDK时,遇到python版本的问题,这里做个记录【正点原子】rk3568开发板资料与Lin......
  • ubuntu 20.04 自由切换 python 的版本
    问题描述当前ubuntu20.04默认安装了多个python的版本,执行python时,默认版本是Python2.7.18zhangsz@zhangsz:~$pythonPython2.7.18(default,Jul12022,12:27:04)[GCC9.4.0]onlinux2Type"help","copyright","credits"or"license"......
  • 【Python】怎么把Python脚本打包成可执行程序?
    需求分析最近根据用户提的需求用python做了一个小工具,但是在给客户使用的时候不能直接发送python文件,毕竟让客户去安装python环境,那就离了大谱了。所以这时候就需要把多个py文件带着运行环境打包成EXE可执行文件。技术实现这里以window为例,Mac是同样的道理。一、检测脚本是否正常1......