2010-07-15 8 views
4

콜백 메소드가 어떻게 작동하는지 설명하고 가능한 경우 파이썬에서 예제를 제공 할 수 있습니까? 그래서 나는 그것들을 이해하는 한, API의 사용자에 의해 API에 제공되는 메소드입니다. 그래서 사용자는 특정 API 함수가 완료 될 때까지 기다릴 필요가 없습니다. 그렇다면 사용자 프로그램이 계속 실행되고 API에서 콜백 메소드를 호출하면 콜백 메소드가 제공된 프로그램의 지점으로 돌아갑니다. 콜백 메소드는 본질적으로 프로그램의 '흐름'에 어떤 영향을 줍니까?파이썬에서 콜백

내가 여기 모호한 경우 죄송합니다.

답변

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 버튼을 누르면 프로그램은 "Running 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 함수가 완료 될 때까지 기다려야합니다."

+0

답장을 보내 주셔서 감사합니다. 따라서 콜백 (API) 메서드와 일반 (API) 메서드 간의 유일한 차이점은 단순히 값을 반환하는 대신 콜백 메서드가 완료되면 차례대로 사용자 메서드를 호출한다는 것입니다. – iman453

+0

위의 "일반적인 방법"(erm, 더 나은 API 개체라고 함)은'Button'입니다. "콜백 메소드"(더 나은 콜백 함수)는'my_callback'입니다. 'Button'과'my_callback'의 차이점은 API가'Button'의 정의를 제공하고 API의 사용자는'my_callback' 만 정의하면된다는 것입니다. API 코드 내부에는 사용자가 버튼을 누르면 일부 기능을 호출하는 로직이 있습니다. 버튼을 사용자 정의하기 위해 API는 API 사용자가'my_command'를 호출 할 함수로 연결하도록 허용합니다. 그것이 바로 콜백입니다. 그들은 일반적으로 제어하지 않는 다른 코드에 연결합니다. – unutbu

+0

알았어요, 고마워! – iman453