提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
回调函数是指一个通过函数指针调用的函数。简单来说,就是把一个函数作为参数传递给另一个函数,并在后者内部某个时刻被调用。
提示:回调函数在异步编程、事件驱动编程和函数式编程使用
一、回调函数是什么?
回调函数也是个函数,把这个函数的指针传给另一个函数,然后后面在满足一定的条件的时候被回调(调用指型)
注意:比如一个按钮被按下执行某个事件,这个事件也就是回调函数,把函数指针给这个按钮,按钮按下然后调用这个事件函数。
二、使用步骤
1. 基本用法
代码如下(示例):
def callback_function(arg):
print(f"回调函数被调用,参数: {arg}")
def main_function(callback, value):
# 执行一些操作
print("主函数执行中...")
# 在适当的时候调用回调函数
callback(value)
# 使用回调函数
main_function(callback_function, "Hello World")
# 输出结果如下:
# 主函数执行中...
# 回调函数被调用,参数: Hello World
2. 带参数的回调函数
假如需要在处理数据后,将数据打印出来,或者将数据保存到一个CSV里面,将打印数据或处理数据当成一个回调函数。
def process_data(data, callback):
"""处理数据并在完成后调用回调函数"""
print(f"处理数据: {data}")
result = data.upper() # 模拟数据处理
callback(result)
def data_handel(result):
print(f"处理完成,结果: {result}")
# 使用
process_data("hello world", data_handel)
3. 使用lambda表达式来作为回调函数
def timer(seconds, callback):
"""定时器函数"""
import time
time.sleep(seconds)
callback()
# 使用lambda作为回调
timer(2, lambda: print("2秒后执行的回调!"))
4. 在GUI编程中常用回调函数
在Gui编程里面的事件,常常当作回调函数,在点击事件执行后调用回调函数
import tkinter as tk
def create_button(window, text, callback):
"""创建带回调函数的按钮"""
button = tk.Button(window, text=text, command=callback)
button.pack()
return button
def on_button_click():
print("按钮被点击了!")
# 使用
root = tk.Tk()
create_button(root, "点击我", on_button_click)
root.mainloop()
5. 异步操作调用回调函数
在异步函数,或在多线程函数里面调用回调函数来告诉主线程执行结束
import threading
import time
def async_operation(callback):
"""模拟异步操作"""
def worker():
print("开始异步操作...")
time.sleep(2) # 模拟耗时操作
result = "操作完成"
callback(result)
thread = threading.Thread(target=worker)
thread.start()
def operation_complete(result):
print(f"异步操作结果: {result}")
# 使用
print("主线程继续执行...")
async_operation(operation_complete)
print("异步操作已启动,主线程不受阻塞")
总结
回调函数是Python中强大的编程模式,特别适用于:
- 事件处理
- 异步编程
- 自定义算法行为
- GUI编程
- 插件系统

被折叠的 条评论
为什么被折叠?



