On 1/25/2011 11:46 AM It't me said...
Hi all,

I'm learning Python with Google's Python class

Ik have a question about the following code:
=================================
def sort(var):
  return var[-1]  #returns the last character of var

Nit: it'll be a character if passed in a string of characters. If you pass in a tuple or list, it'll be the last thing in the list.


def sort_last():
   tup = [(1, 3), (3, 2), (2, 1)]
   print(sorted(tup, key=sort))

sort_last()
==================================

I uderstand everything except (var) value.
I understand that key=sort calls the sort function.
But where comes the var value from?
Does sort automatic pass the value from tup to (var)

because (var) is nowhere defined.

in the line

    def sort(var):

var becomes in effect a placeholder for whatever value is passed to the function.

in the line

    print(sorted(tup, key=sort))

sort is being passed into sorted, and looking into the python documentation for sorted we find two things.



sorted(iterable[, cmp[, key[, reverse]]])ΒΆ

    Return a new sorted list from the items in iterable.



1) that sorted expects the first paramater to be iterable. And a bit further we find...



key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower. The default value is None (compare the elements directly).


Aahh... there it is -- each element of the iterable will be passed into the function named by key to determine the comparison key.


Now, applies to your code this means that for each pair in
[(1, 3), (3, 2), (2, 1)] sorted will comare the result of your sort function when passed that pair, and your sort function returns the last element in that pair.


HTH,

Emile

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

Reply via email to