On 01/08/14 06:12, memilanuk wrote:

counts = {'a':1, 'b':22, 'c':100}

then counts.get('b') should return 22.  I got that much.

And counts.get is just an uncalled version of that:

foo = counts.get
foo('b')

should return 22 as well.  Think I got that as well.

Well done, thats the crux of it.

Where things are going pear-shaped is how counts.get can function as a
'key' when we don't actually supply () (or anything inside them)

The max() function calls the key function internally.

Here is a trivial example (untested code!)

>>> def f(aFunc):
      for n in range(3):
        print("Your function returns",aFunc(n),"with input",n)
>>>
>>> def g(n):
      return n+2
>>>
>>> f(g)
Your function returns 2 with input 0
Your function returns 3 with input 1
Your function returns 4 with input 2

So f calls aFunc using n internally.
The specification of f requires that you pass it a function that accepts a single argument

max and sort etc work the same way.
They call your function internally.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

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

Reply via email to