回调Python

时间:2010-07-15 15:26:26

标签: python

有人可以解释回调方法是如何工作的,如果可能的话,给我一个Python的例子吗?因此,据我所知,它们是API的用户提供给API的方法,因此用户不必等到特定的API函数完成。那么用户程序是否继续执行,并且一旦API调用了回调方法,返回到提供回调方法的程序中的点?回调方法如何影响程序的“流程”?

很抱歉,如果我在这里模糊不清。

1 个答案:

答案 0 :(得分: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按钮时,程序会打印“正在运行my_callback”。

如果你玩这个代码:

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()

你会看到按下任一按钮阻止GUI响应,直到回调结束。所以“用户确实必须等到特定的API函数完成”。