[Tutor] Sharing data between modules

Python python at venix.com
Thu Oct 19 17:48:13 CEST 2006


On Thu, 2006-10-19 at 10:41 +0100, etrade.griffiths at dsl.pipex.com wrote:
> Hi
> 
> just starting to get to grips with writing GUIs in Python using wxPython and 
> not being a computer scientist, have a philosophical question about the "best" 
> way to pass data between various modules.  For example, I anticipate having 
> one module to look after the GUI stuff where users can input data (either from 
> the keyboard or file), another to process the data and (probably) a third to 
> display the calculation results.  Just not sure what the most efficient way of 
> passing data between the various modules.  I can think of 4 ways to do this, 
> of which 1 is not possible in Python (I think).
> 
> (1) via temp files: modules read to and write from temporary files
> (2) via function arguments: data passed from one module to another via 
> argument lists.  This seems the most logical but I have an irrational dislike 
> of long argument lists.  Could pass data objects (eg. C type structs) or 
> dictionaries via the argument list but I don't think this gets around 
> the "problem" of long argument lists and we now need pack/unpack type 
> functions.  Maybe this isn't a problem anyway?

dictionaries can work pretty well if you leverage the ** syntax in
function arguments.  If we imagine a dictionary named passdata where the
keys are named k1 to k99:

def func1(k1, k30, k47, **kwds):
	# the unused parameters are collected in the dictionary kwds
	# do stuff with the parameters
	return result

result = func1( **passdata)

The functions that depend on specific variables can identify the
variables in the parameter definition.  I've generally been happy with
this kind of approach.


> (3) via globals: AFAIK this is not recommended so we will move swiftly on
> (4) indirectly: thinking here of something along the FORTRAN COMMON blocks 
> which (I think) Python doesn't have
> 
> So, looks like it's a choice between (1) and (2) - or have I missed something 
> obvious?  What is the most "pythonic" way of doing this?  Thanks in advance 
> for any suggestions
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
-- 
Lloyd Kvam
Venix Corp



More information about the Tutor mailing list