首页 > 编程语言 >Python中的回调函数

Python中的回调函数

时间:2024-01-20 16:11:23浏览次数:34  
标签:f1 f2 return 函数 Python print 回调 def

先来看一个程序:

def f1():
    print(2)
    return 1


def f2(a):
    print(3)
    return a


print(f2(f1()))

这个程序,在调用时,f2会先等待f1调用完毕,返回1之后,再进行调用,所以会输出2、3、1,但是若这样改写程序

def f1():
    print(2)
    return 1


def f2(f):
    print(3)
    return f()


print(f2(f1))

这里我们会发现,给f2传的实参从f1()变成了f1,那这两有什么区别呢?简单来说就是:

  1. f1()表示调用函数,并返回结果

  2. f1仅仅表示这个函数对象,并不执行函数调用

那这里就涉及到一个关键的点了,在Python中,一切皆为对象,当然,函数也不例外。所以f1实际上是表示这个函数的对象,当我们print(f1)的时候,会输出这个对象所在的地址。

那么,既然把它作为一个对象来看待,那么它和数字、字符串等标准对象其实就无本质差异了,所以,一个函数可以作为:

  1. 可以作为被引用的对象

  2. 可以作为类型容器的元素

  3. 可以作为参数传给另一个函数

  4. 可以作为函数的返回值

 

  在上面那个程序中,把f1作为对象(也就是f1的地址)传给了f2,f2会执行到return 语句的时候,才会调用f1,所以输出结果为3、2、1。由此,可以引出回调函数的定义:

把一段可执行的代码像参数传递那样传给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调。

标签:f1,f2,return,函数,Python,print,回调,def
From: https://www.cnblogs.com/haruyuki/p/17975383

相关文章

  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......
  • 日期函数——来源网络,方便查阅
    DateUtils时间单元,非常有用。记得引用这个单元,不然不能用。CompareDate比较两个日期时间值日期部分的大小CompareDateTime比较两个日期时间值的大小CompareTime比较两个日期时间值时间部分的大小DateOf去除日期时间值的时间部分DateTimeToJulianDate转换日期时间值为儒略日......
  • 积性函数学习笔记
    积性函数定义积性函数:\(f(x)\)满足\(\forall\gcd(a,b)=1,f(ab)=f(a)f(b)\)若没有\(\gcd(a,b)=1\)的性质,则为完全积性函数。性质性质1:\(f(x),g(x)\)是积性函数\(\implies\)\(f\timesg\)是积性函数,\(f\divg\)是积性函数证明略。性质2:狄利克雷(Dirichlet)卷积\(......
  • MySQL中的加密函数
    本文简单介绍MySQL中的加密函数。MySQL提供了多种加密函数,以下是一些常用的:PASSWORD(str):用于密码加密,通常用于创建用户时对密码进行加密。MD5(str):生成一个128位的加密串,返回一个32位的16进制数。SHA1(str):生成一个160位的加密串,返回一个40位的16进制数。ENCODE(str......
  • Python手相识别教程10命运线
    10命运线土星线是手相中信息量最大的线条之一。它记录了工作和生活方式的重大变化,描述了我们在人生不同阶段的安全感。这条线有很多名字:命运线、命运线,以及最贴切的安全线。命运线反映了货币安全,但这并不是土星线上显示的唯一一种安全。这条线的标记和特征可能是客观的,也可能......
  • pythonUI自动化之selenium获取浏览器接口信息
    #导入Selenium库中的Chrome驱动和DesiredCapabilities类fromselenium.webdriverimportChrome,DesiredCapabilities#导入Chrome驱动的特定选项类fromselenium.webdriver.chrome.optionsimportOptions#这是主程序的入口点,只有当该文件被直接运行时,以下的......
  • 基于flask框架的python作为微信小程序后端的实现方法(个人版)
    Flask基础语法引入Flask类fromflaskimportFlask创建一个app,也就是Flask类的一个对象app=Flask(__name__)接下来写每个路径对应的函数如@app.route('/')deftest()#这里函数可以任意命名,这个函数会在访问括号里路径的时候被调用 return"helloworld"这三行代码......
  • c++函数默认参数及占位参数
    一.函数默认参数在c++中,函数形参列表中的形参是可以有默认值的语法:如果我们自己传入数据,就用自己的数据,如果没有,就用默认值注意:1.如果某个位置参数有默认值,那么从这个位置往后,从左往右,必须都要有默认值2.如果函数声明有默认值,函数实现的时候就不能有默认参数。(声明和实现只......
  • Python自动化办公的实际需求——把Excel里面的数字改成对应的成绩档次,优良中差四挡(上
    大家好,我是皮皮。一、前言前几天在Python白银交流群【瑜亮老师】分享了一个小需求,给大家练练手。问题如下:成绩表中有3个sheet,大体上题目是从易到难。要求:把里面的数字改成对应的成绩档次,优良中差四挡。4个档次:100分为“优”,80-99分为“良”,60-79分为“中”,60分以下为“差”。要......
  • 细说JavaScript函数(JavaScript函数详解)
    函数的作用就是封装一段JavaScript代码,让开发者可以通古简单的方式使用这段代码![细说JavaScript函数(JavaScript函数详解)](https://img-blog.csdnimg.cn/direct/9f5c340fdb0d4540a3bcb8e5e251e96b.png)一、函数的分类在几乎所有的编程语言中,都有函数这一概念,并且没中语言本身......