Rob De Almeida wrote: > LaundroMat wrote: > > 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: >>> if template: >>> return mainFunction(var, template) >>> else: >>> return mainFunction(var) 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: >>> def mainFunction(var, template='base'): to >>> def mainFunction(var, template): >>> if len(template)=0: >>> template = 'base' 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. -- http://mail.python.org/mailman/listinfo/python-list