When you write a piece of code, you're normally putting the filling into the sandwich; there's a built-in program in your computer that controls the loading and running of the code thst you've written, and there is a whole library of standard pieces of code that you call to perform the low level operations. So thus you provide the sandwich filling.
A program as simple as
print "Hello World"
(and that will work in Perl, Python or PHP amongst others) illustrates this - the operating systen runs it, and the built in function within the language chosen deals with the detail of output.
But there are a few occasions where the mechanism gets a bit more complex - where one of the functions itself calls BACK to your code. Let's say you're sorting, but you don't want to write your own sort algorithm. How will that work? Well - you can call the sort
function but then how do you tell it whether record a
comes before or after record b
? The easiest answer is to pass the name of a function that you've written to answer just such a question into the language's sort routine and have it callback
to your code.
During last week's course, I was describing this mechanism and in order to make it clearer, I wrote my own piece of code to do the sorting ... but then took that out to use Python's own sort routine. I've posted the example up to our longer Python examples
- you can see both the version that uses the callback, and my example of what really happens inside.
Callbacks are used in most programming languages, but not usually all that often. Big uses are sorting, and for even handling on GUIs (Graphic User Interfaces). (written 2007-08-19, updated 2007-08-21)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesP307 - Perl/Tk 
Expect in Perl - a short explanation and a practical example - (2010-10-22) 
Tk locks up - 100% c.p.u. on a simple program (Tcl, Perl, Python) - (2007-09-09) 
(Perl) Callbacks - what are they? - (2006-05-30) 
Perl/Tk real time display - (2006-02-10) 
The magic of -textvariable - (2006-02-08) 
Add a friendly front end with Tk - (2006-02-08)Y111 - Python - More on Collections and Sequences 
Mutable v Immuatble objects in Python, and the implication - (2015-02-24) 
Accessing variables across subroutine boundaries - Perl, Python, Java and Tcl - (2015-01-18) 
zip in Python - (2012-07-05) 
Python for loops - applying a temporary second name to the same object - (2011-09-14) 
List slices in Python - 2 and 3 values forms, with an uplifting example - (2011-07-06) 
Python dictionaries - mutable and immutable keys and values - (2011-01-29) 
Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12) 
Sorting - naturally, or into a different order - (2010-08-14) 
Sorting people by their names - (2010-07-29) 
Python - access to variables in the outer scope - (2010-04-12) 
List Comprehensions in Python - (2008-11-06) 
Anonymous functions (lambdas) and map in Python - (2008-11-04) 
Last elements in a Perl or Python list - (2007-08-16) 
Python - extend v append on a list - (2006-10-20) 
Copying a reference, or cloning - (2006-03-05) 
What is a callback? - (2005-07-22) 
Python is a fabulous language - (2004-09-24)
Some other Articles
Business travel by train in the USATratum TechnologiesSome one line Perl tips and techniquesWhat do people look for on a hotel web site?Callbacks - a more complex code sandwichDates for Easter - 2008 to 2015Good to be homeTroy, up state New YorkPython class rattling aroundRegular expressions made easy - building from components