> So what do you use the
> def bar(x, y):
> return x + y
>
> bar(4, 5)
>
> functions for? (I just need a simple example)
As an illustration of what a functionlooks like bar is
fine but as it stands it's not a great example of a
real function for several reasons:
1) The name is not descriptive of what it does
2) The body is shorter to write than the function call
Functions serve two useful purposes, the first is to make you
code easier to read by replacing several lines of primitive code
to a readable and meaningful description. This is known as
*abstraction*.
The second purpose is to cut down the amount of typing you do
(and help make maintenance easier too). This is because the
function turns what could be a long sequence of instructions
into a short function name.
Let's look at a slightly more realistic example:
def average(listOfNums):
total = 0
if not type(listOfNums) == list:
raise TypeError
for num in listOfNums:
if not type(num) == int:
raise TypeError
total += num
return total/len(listOfNums)
Now, it's much easier to type
print average([1,3,4,6,8,9,12])
print average([6,3,8,1,9])
than to try to retype the code inside the function both times
(and any other time you need to average a list...) and in
addition your code is much easier to read - 'average' gives
some idea of what to expect in the result.
BTW You could shorten the function slightly using a list
comprehension but the basic need for type checking etc is
still valid and the naming/abstaction issue also still holds.
HTH,
Alan G
Author of the Learn to Program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor