Python中的回调

4 投票
1 回答
5236 浏览
提问于 2025-04-16 01:21

有人能解释一下回调方法是怎么回事吗?如果可以的话,给我一个Python的例子。根据我的理解,回调方法是用户提供给API的一种方法,这样用户就不用等到某个特定的API功能完成。也就是说,用户的程序可以继续执行,而一旦API调用了回调方法,程序就会返回到提供回调方法的地方。那么,回调方法到底是怎么影响程序的“流程”的呢?

抱歉我说得有点模糊。

1 个回答

7

回调函数就是用户提供的钩子。它们让你可以指定在某些事件发生时要调用哪个函数。re.sub 有一个回调函数,但听起来你是在处理图形用户界面(GUI),所以我给你举个GUI的例子:

这里有一个非常简单的回调函数示例:

from Tkinter import *

master = Tk()

def my_callback():
    print('Running my_callback')

b = Button(master, text="OK", command=my_callback)
b.pack()

mainloop()

当你按下 OK 按钮时,程序会打印出“正在运行我的回调”。

如果你试着玩一下这个代码:

from Tkinter import *
import time

master = Tk()

def my_callback():
    print('Starting my_callback')
    time.sleep(5)
    print('Ending my_callback')    

def my_callback2():
    print('Starting my_callback2')
    time.sleep(5)
    print('Ending my_callback2')    

b = Button(master, text="OK", command=my_callback)
b.pack()
b = Button(master, text="OK2", command=my_callback2)
b.pack()

mainloop()

你会发现按下任意一个按钮都会让图形界面暂时不响应,直到回调函数执行完毕。所以“用户确实需要等到那个特定的API函数完成”。

撰写回答