Default Value

Steven D'Aprano steve+comp.lang.python at pearwood.info
Fri Jun 21 11:57:17 EDT 2013


On Thu, 20 Jun 2013 11:05:32 -0700, Rick Johnson wrote:

> Python functions are objects that take arguments, of which (the
> arguments) are then converted to attributes of the function object.
> Ah-Ha! Urm, but wait! We already have a method to define Objects. Heck,
> I can even create my own callable objects if i want!
> 
> Observe:
>   py> class FuncAdd(object):
>   ...     def __init__(self, ivalue):
>   ...         self.ivalue = ivalue

Notice how you are storing state here? I thought you said, and I quote:

"When the subroutine is completed, ALL INPUTS and local variables are 
expected to be destroyed. If the programmer wants a return value, he need 
simply ask. Data persistence is NOT a function of subroutines!" 
[emphasis added] 

And yet here you are defining persistent input ("ivalue") to the callable 
subroutine, which is stored as external state and not destroyed at the 
end of the subroutine call:

>   ...     def __call__(self, numeric):
>   ...         return self.ivalue + numeric 
>   ... 

All you have done here is define a subroutine with state, precisely the 
thing that you say subroutines must never have. What you haven't done is 
define a function which takes a default value that can be overridden when 
called. Your argument is invalid.



-- 
Steven



More information about the Python-list mailing list