How best to pass arbitrary parameters from one function to another

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Tue Sep 30 05:26:36 EDT 2008


John O'Hagan a écrit :
> Hi Pythonistas,
> 
> I'm looking for the best way to pass an arbitrary number and type of variables 
> created by one function to another.
 >
> They can't be global because they may 
> have different values each time they are used in the second function.
> 
> So far I'm trying to do something like this:
> 
> 
> def process_args( [list, of, command-line, arguments] ):
> 
> 	do stuff
> 	return {dictionary : of, local : variables }
> 
> def main_function( **kwargs ):
> 
> 	do stuff
> 	return result
> 
> kw1 = process_args( [some, list] )
> kw2 = process_args( [a, different, list] )
> 
> for i in main_function( **kw1 ):
> 
> 	kw2[ var1 ] = i
> 	kw2[ var2 ] = len( i )
> 
> 	for j in main_function(**kw2):
> 
> 		print j
> 
> This only seems to work if I specify a default value for every possible 
> parameter of main_function and also for any others which may be passed to it, 
> which is a bit tedious because there are very many of them but only a few are 
> used in any given execution of the program.

If this is about commmand line arguments parsing and defaults, you may 
want to have a look at the optparse package in the stdlib.

Also, kwargs work fine with default arguments too, ie:


def func(arg1=1, arg2='yadda', arg3=None):
     print arg1, arg2, arg3

for kw in ({}, {'arg1':42}, {'arg2':'yop', 'arg3' : range(5)}):
     func(**kw)

HTH



More information about the Python-list mailing list