4
有人可以解释回调方法是如何工作的,如果可能的话,给我一个Python例子吗?所以据我了解,它们是由API的用户提供给API的方法,以便用户不必等到该特定的API函数完成。那么用户程序是否继续执行,并且一旦API调用回调方法,就返回到提供回调方法的程序中的点?回调方法如何实质上影响程序的“流程”?用Python回拨
对不起,如果我在这里模糊。
有人可以解释回调方法是如何工作的,如果可能的话,给我一个Python例子吗?所以据我了解,它们是由API的用户提供给API的方法,以便用户不必等到该特定的API函数完成。那么用户程序是否继续执行,并且一旦API调用回调方法,就返回到提供回调方法的程序中的点?回调方法如何实质上影响程序的“流程”?用Python回拨
对不起,如果我在这里模糊。
回调只是用户提供的钩子。它们允许您指定在发生某些事件时调用哪个函数。 re.sub
有所回调,但它听起来就像你正在处理一个图形用户界面,所以我给一个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函数完成”。
感谢您的回复。因此,回调(API)方法和常规(API)方法之间的唯一区别是,回调方法不是简单地返回值,而是在完成时调用用户方法? – iman453 2010-07-15 16:17:57
上面,“常规方法”(erm,更好的称为API对象)是'Button'。 “回调方法”(更好的称为回调函数)是'my_callback'。 'Button'和'my_callback'的区别在于API提供了'Button'的定义,而API的用户只需要定义'my_callback'。 API的代码深处是一些逻辑,它说如果用户按下按钮,调用某个函数。为了定制按钮,API允许API用户挂接'my_command'作为要调用的函数。这就是回调所做的。他们挂钩到您通常无法控制的其他代码中。 – unutbu 2010-07-15 17:00:22
明白了,谢谢! – iman453 2010-07-15 17:16:11