> Sorry, but you have confused me more ;) Can you give an simple example > of just function() ? Where can it be useful? > > And when you say it returns a value, what do you mean by that? return to > whom and what exactly?
One view that's common is the idea that a function is a box that takes an input and returns an output: +----------+ input ----> | function | -----> output +----------+ The most direct equivalent you've experienced to this is a math function. For example, if we're traveling in a car at fifty miles an hour, for three hours, we know that we've traveled 150 miles. (Word problems... aagggh!) But let's write that as a function: ###### def miles_traveled_at_50_mph_for_3_hours(): return 50 * 3 ###### A function definition does not do anything by itself, but it can be "called" after it's defined. Try writing: ############################################# def miles_traveled_at_50_mph_for_3_hours(): return 50 * 3 print miles_traveled_at_50_mph_for_3_hours() ############################################# and run it, and see what you see. We are "defining" the function at the top, and "calling" the function at the bottom, (Forgive me for such a long function name: please bear with it for a moment.) One natural question we might have here is: how far do we travel if we go at the same speed, but for 4 and a half miles instead? We could just calculate it and write it out again: ###### def miles_traveled_at_50_mph_for_4_half_hours(): return 50 * 4.5 ###### But we can do a little better, by allowing our function to take "hours" as an parameter: ###### def miles_traveled_at_50_mph(hours): return 50 * hours ###### Now we can find out how long we've travelled by computing this function for the particular hours we'd like. (And we can shorten the function name. *grin*) For example, can you guess at what: print miles_traveled_at_50_mph(4) print miles_traveled_at_50_mph(3) print miles_traveled_at_50_mph(2) gives us? Try it! Functions let us define a relationship between inputs and outputs. The idea is that we've made our function take in an input, and it can vary its answer based on that input. Our miles_traveled function above changes its answer based on what length of time we drive. But a different function may define an entirely different relationship between its input and output. As another quick example: ###### def square(x): """Given x, returns the square of x.""" return x * x ###### or: ###### def height(h): """Given someone's height h in feet, tells us if that person is high or not.""" if h < 4: return "short" elif h < 6: return "medium" else: return "high" ###### We now have two other functions that also take in a single input, but they do different things, and even return different kinds of data. The square() example, like the miles_traveled example, takes a number and returns another number. But height() takes a number, and returns a string. In general, functions can take anything as an input, and return anything as an output --- I've been using numbers primarily because I'm trying to piggyback the knowledge you already should have about math and algebra. In my work, all the functions I write use more complex inputs --- and usually not numbers --- but the main ideas are the same. Do you have questions about this so far? _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor