On 02/15/2017 04:56 PM, Alan Gauld via Tutor wrote:
On 15/02/17 22:37, Jim wrote:

         self.choices = {
                 "1": self.show_notes,
                 "2": self.search_notes,
                 "3": self.add_note,
                 "4": self.modify_note,
                 "5": self.quit
                 }

The author says:

The action variable actually refers to a specific method and is called
by appending empty brackets (since none of the methods require
parameters) to the variable.


I don't recall ever seeing this before.  What is this technique called?

Its very common, especially in GUIs and used in many
languages including C, VB, Java, Javascript and Lisp.
Its usually called a callback (because the stored
function is called back by the event receiver).

In C it is done by using a "pointer to a function".
In Lisp you create a Lambda (an anonymous function)
- which you can also do in Python and recent Java
versions. In Smalltalk and Ruby you define a "block".
In most of the other languages it's similar to Python,
you just pass the name of the function.

This is often referred to as the language treating
functions as "first class objects", and is a core
part of Functional Programming.

A common FP structure is the map function which takes
a function and a sequence and applies the function
to each member of the sequence, returning the
resultant sequence. Here is a short Python example:

def double(x): return x*2

data = [1,2,3,4]
result = map(double, data)   # -> [2,4,6,8]
print(result)

HTH

It does help. I have done a little bit of tkinter programing and have used callbacks, but when I looked at this code it just didn't register that way in my mind. Thanks for your explanation.

Regards,  Jim

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to