Rob said:
LaundroMat said:
Suppose I have this function:
def f(var=1):
return var*2
What value do I have to pass to f() if I want it to evaluate var to 1?
I know that f() will return 2, but what if I absolutely want to pass a
value to f()? "None" doesn't seem to work..
If you *absolutely* want to pass a value and you don't know the default
value (otherwise you could just pass it):
import inspect
v = inspect.getargspec(f)[3][0] # first default value
f(v)
2
I have in fact a bunch of functions that all pass similar information
to one main function. That function takes (amongst others) a template
variable. If it's not being passed, it is set to a default value by the
function called upon.
For the moment, whenever a function calls the main function, I check
whether the calling function has the template variable set:
Now, I thought this isn't the cleanest way to do things; so I was
looking for ways to initialize the template variable, so that I could
always return mainFunction(var, template). mainFunction() would then
assign the default value to template.
From your answers, this seems to be impossible. The minute my variable
is initialised, there's no way I can have mainFunction() assign a value
without explicitly asking it to do so.
I guess the best way would then be to change mainFunction from:
and have the calling functions call mainFunction (var, template) and
initialise template to ''.
I still have that nagging feeling nicer code could be written to solve
this, but I won't try to lose any sleep over it.
Thanks for all the replies.