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 articles
Y111 - Python - More on Collections and Sequences [61] Python is a fabulous language - (2004-09-24)
[386] What is a callback? - (2005-07-22)
[633] Copying a reference, or cloning - (2006-03-05)
[899] Python - extend v append on a list - (2006-10-20)
[1304] Last elements in a Perl or Python list - (2007-08-16)
[1869] Anonymous functions (lambdas) and map in Python - (2008-11-04)
[1873] List Comprehensions in Python - (2008-11-06)
[2718] Python - access to variables in the outer scope - (2010-04-12)
[2894] Sorting people by their names - (2010-07-29)
[2920] Sorting - naturally, or into a different order - (2010-08-14)
[2996] Copying - duplicating data, or just adding a name? Perl and Python compared - (2010-10-12)
[3150] Python dictionaries - mutable and immutable keys and values - (2011-01-29)
[3348] List slices in Python - 2 and 3 values forms, with an uplifting example - (2011-07-06)
[3439] Python for loops - applying a temporary second name to the same object - (2011-09-14)
[3797] zip in Python - (2012-07-05)
[4398] Accessing variables across subroutine boundaries - Perl, Python, Java and Tcl - (2015-01-18)
[4442] Mutable v Immuatble objects in Python, and the implication - (2015-02-24)
P307 - Perl/Tk [595] Add a friendly front end with Tk - (2006-02-08)
[596] The magic of -textvariable - (2006-02-08)
[599] Perl/Tk real time display - (2006-02-10)
[738] (Perl) Callbacks - what are they? - (2006-05-30)
[1340] Tk locks up - 100% c.p.u. on a simple program (Tcl, Perl, Python) - (2007-09-09)
[3009] Expect in Perl - a short explanation and a practical example - (2010-10-22)
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