[Tutor] Callbacks in Python

Alan Gauld alan.gauld at btinternet.com
Thu Aug 27 10:07:41 CEST 2009


"Jramak" <jramak345 at gmail.com> wrote

> I'm confused by callbacks. I would really appreciate any introduction or
> help in understanding the concept of callbacks.

Callbacks are used in all sorts of different ways in programming 
so it might help to undertand what exactly confuses you.

Is it the whole concept of a callback? 
Is it the idea of a function as an object?
Is it the use of callbacks?
    In a GUI? In a networking framework like Twisted?

Do you want to use someone elses callback mechanism 
or do you want to create your own?

The basic name comnes from  the concept of calling 
someone, asking them to do someting then call you back 
when they are done. So you leave your number with them.
The number you leave is what they "call back".
In programming you call a function and at some critical 
point that function calls you back on the function that 
you passed in.

def someFunction(value, callback)
       result = pow(value,2)
       callback(result)

def myFunction()
       v = 42
       someFunction(v, myFunction_continue)

def myFunction_contiinue(result)
      print result

myFunction()

This was very useful before threading environments became 
common as a way of simulating multi threading. Then when GUIs 
came along it bacame a common way of associating functions 
with widgets. And in networking we can associate network events 
with functions in a similar way. In fact any kind of event driven 
program is likely to use callbacks as a way of distributing control 
depending on event type. The typical implementation will see the 
event framework storing the callbacks in some kind of dictionary
keyed by event type.

HTH,


-- 
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list