【python】回调函数的文字解说过程

# 数字作为参数


def avg(x,y): #定义一个函数avg,用来求两个数的平均数
       return (x+y)/2
result1=avg(x=2,y=8) #用result1变量名来存储结果
print(result1)

# 字符串作为参数


def say(name):
       return name+'永远18岁'
result2=say(name='王老师')
print(result2)

# 请大家一起拥有一个大胆的想法,函数名能不能作为参数?
# 先说答案:能!必须能!
# 先看个例子

# 上面我们定义了avg()函数用来求两个数的平均数
# 这里我们再定义一个函数,也是求平均值
# 那我是不是可以调用上面的avg()函数
def avg_(a,b):
       return avg(a,b) #调用上面的avg()函数
result3=avg_(10,30)
print(result3)


#但是我们一般这样写成回调函数的形式:


def call_avg(avg,a,b):
       return avg(a,b)
# def 函数名(avg,a,b):
#        return 函数名(a,b)
result4=call_avg(avg,10,30)
print(result4)

# 结果依旧正确
# 所以请大家记住两件事
# 第一件事,函数名可以做参数,通过函数名就可以调用这个函数,实现这个函数的功能;
# 第二件事,这样的函数叫做回调函数
# 被叫做回调函数,不是说这个函数有特别之处,只是被当作参数使用而已
# 概念很简单,但是用法很精妙

# 比如
# 到了7点就播放起床音乐铃
# def playmusic():
#        播放音乐的代码
# 可是程序怎么知道时间刚好到了7点呢?
# 比较笨的方法:
# 搞一个循环,不停的查看系统的时间。
# while true:
#获取现在的时间,如果现在是早上7点
#调用函数playmusic()
# 虽能达到目的,但是绝大多数时间都在循坏里折腾,无意义的消耗
# 好的办法:
# # 利用系统提供的定时服务
import threading
timer=threading.Timer(3,playmusic)
# 这里的秒数就是距离当前时间距离7点还有多少秒
# playmusic函数名也作为了参数传给了系统,就是告诉系统,时间到的时候,就调用这个函数就行了
# 在系统内部自有一套计时的方法,于是在3秒之后就会调用这个函数
# 显然,这是一个回调函数


# 回调函数的作用:
# 1.恰当的时机去做某件事
# 2.让程序设计更灵活


# 你到一个商店买东西,刚好你要的东西没有货
# 于是你在店员那里留下了你的电话
# 过了几天店里有货了,店员帮你买了。
# 在这个例子里,你的电话号码就叫回调函数,
# 你把电话留给店员就叫登记回调函数,
# 店里后来有货了叫做触发了回调关联的事件,
# 店员帮你买了叫做调用回调函数。

# 再举个例子
# 有一个列表,列表里面是你们班和1班的学号
# 前四个数字2022代表年级,第五六个数字代表班级号,01班和02班
# 第七个数字代表男生还是女生,数字0为女生,数字1为男生
# 最后两个数字是每个人都不一样的序号


lst=['202202003','202201101','202202105','2022021006','202201109']
# 我们想根据班级号01和02来做出排序
# 首先,我们知道排序的函数是sorted(参数,key=规则)
# 那我们针对lst进行排序的时候,还要给出规则,规则就是依据学号的第五六个字符来排序
# 那我们是不是可以先写一个函数,只要输入一个学号,就选中他的第五六个数字

def byclass(x):                # 定义一个byclass(),只要往里面传x
       return x[4:6]             # 就返回这个x的第五六个字符(从0开始索引,所以是[4:6],左边的4是闭区间,右边的6是开区间)
result5=sorted(lst,key=byclass)               # 用sorted排序,规则就是byclass函数的返回值,sorted就会根据第五六个数字来排序
print(result5)
# 在这里面,我们就是使用sorted的时候调用了其他函数作为我们排序的规则!
 

素材依据:b站up主偶尔有点小迷糊的回调函数视频。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值