IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-回调函数 -> 正文阅读

[Python知识库]python-回调函数

回调函数

函数的名字作为其他函数的参数,那么这个函数就叫做回调函数

例子:

def avg(x,y):
    return (x+y)/2

def my_sum(x,y):
    return x+y

def function(f,x,y):
    return f(x,y)

avg_1=function(avg,3,4)
print(avg_1)
sum_1=function(my_sum,3,4)
print(sum_1)

运行结果:

3.5
7

回调函数的应用

回调函数比较灵活,比如sorted,提供一个回调函数,可以根据需要进行排序

sorted函数的定义如下:
sorted(iterable, /, *, key=None, reverse=False)?
这里的key指定带有单个参数的函数,这个参数是iterable中的每个元素,用于从每个元素中提取比较的健

#将my_list中的元素按照第6位的大小进行排序

my_list=["20220203","20220103","20220402","20220105","20220203","20220104","20220504","20220603"]

def by_six_index(item):
    return item[5:6]
new_list=sorted(my_list,key=by_six_index)

print(new_list)

运行结果:

['20220103', '20220105', '20220104', '20220203', '20220203', '20220402', '20220504', '20220603']

以上代码可以使用lambda表达式进行改良

my_list=["20220203","20220103","20220402","20220105","20220203","20220104","20220504","20220603"]

new_list=sorted(my_list,key=lambda item:item[5:6])
re.sub方法

正则表达式的sub方法定义如下:
re.sub(pattern, repl, string, count=0, flags=0)
这里的repl可以是个字符串,也可以是一个回调函数,如果是回调函数,参数是一个Match对象
如果 repl 是一个函数,那它会对每个非重复的 pattern 的情况调用。这个函数只能有一个 匹配对象 参数,并返回一个替换后的字符串

import re
origin_str="Today is one:by:one, tomorrow is two:by:two"


def replacefunction(match):
    group1=match.group(1)
    group2=match.group(2)
    group3=match.group(3)
    return group1+"-"+group2+"-"+group3

new_str=re.sub(r"(\w{3}):(\w{2}):(\w{3})",replacefunction,origin_str)
print(new_str)

运行结果:

Today is one-by-one, tomorrow is two-by-two

总结:如果使用的方法或者函数中有参数是一个回调函数,首选要弄清楚这个回调函数的参数是什么,如果函数体只有一个return语句,可以用lambda函数

思考:
如果两个函数大部分代码都一样,只是某一部分不一样,而这一部分可以考虑将其写成回调函数,这两个函数是否可以合并成一个?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:50:39  更:2022-04-14 23:54:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:27:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码