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