[Tutor] trying to understand the logic of functions

Gregor Lingl glingl at aon.at
Wed Apr 7 03:13:14 EDT 2004


Hi Peter!

I tried to rewrite your recent posting, just using
different terms. I hope this sheds a different light
on this topic. What do you think of this?

1. a function is defined thus:

   def NAME(LIST OF PARAMETERS):
       STATEMENTS

2. when a function is called:

   it takes [gets passed] an argument [object
                                       (i. e. const or name or expression (*))], 

   and returns a result [return value, i.e. another object],
   or performs an action;

3. variables are the names for objects;

   parameters are the names used in the definition of a function,
   inside the parentheses, to refer to the objects which will be
   passed as arguments when the function is called;

4. function names, as well as parameter names 
   can be arbitrary; they are not what gets stored in
   memory and manipulated by the function when it is called; they are
   just names;

5. statements can assign names to objects; an example is a
   statement which assigns a name to the object returned by a function
   e.g.:

   name = function (argument);

thus, a parameter [which is a name] can be the result of a *function call*,
i.e. its result is the argument of its parent function: e.g.:

   fun1 (fun2()), or even 
   fun1 (fun2(fun3(argument)))


There is a very important difference between a function call and a 
function. if you
use a function call as argument, the resulting object is bound to the 
parameter (name).

But you can also use function(-objects) as arguments, in order to call them
somewhere in the body of the function to be defined. I think this is a 
*somewhat*
advanced topic - therefore here a very short example to clarify it:

 >>> def square(x):
        return x*x

 >>> def cubus(x):
        return x*x*x

 >>> def table(fun):
        for x in range(5):
                print x, fun(x)

 >>> table(square)
0 0
1 1
2 4
3 9
4 16
 >>> table(cubus)
0 0
1 1
2 8
3 27
4 64
 >>>

(*) strictly speaking constants and names are also expression (albeit 
simple ones in
contrast to compound expressions)

Regards,
Gregor


peter hodgson schrieb:

>On Monday 22 March 2004 20:47, python_simpleton wrote that terms like
>'parameter' were confusing;
>
>here's another newbie's attempt to sort out parameter's node of terms:
>
>1. a function is defined thus:
>
>   def NAME(LIST OF PARAMETERS):
>       STATEMENTS
>
>2. when a function is called:
>
>   it takes [gets passed] an argument [value or variable], 
>
>   and returns a result [return value],
>   or performs an action;
>
>3. variables are the boxes for values;
>
>   parameters are the variables used in the definition of a function,
>   inside the parentheses, to refer to the value[s] which will be
>   passed as arguments when the function is called;
>
>4. function names, as well as the names of variables [incl.
>   parameters] can be arbitrary; they are not what gets stored in
>   memory and manipulated by the function when it is called; they are
>   just labelled boxes;
>
>5. statements can assign values to variables; an example is a
>   statement which assigns the return value of a function to a
>   variable; e.g.:
>
>   variable = function (argument);
>
>thus, a parameter [which is a variable] can be a function,
>i.e. its result is the argument of its parent function: e.g.:
>
>   fun1 (fun2()), or even 
>   fun1 (fun2(fun3(argument)))
>
>
>
>
>
>
>
>
>
>_______________________________________________
>Tutor maillist  -  Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
>
>
>  
>



More information about the Tutor mailing list