Global Variables in Modules

Philip Swartzleonard starx at pacbell.net
Tue Feb 12 04:08:47 CET 2002


Jeff Clement || Mon 11 Feb 2002 10:10:25a:

> Good Afternoon All,
> 
> I have a project where it would be extremely handy (albeit maybe not so
> clean codeing), to have a global variable in one module be available to
> another module (without a lot of work.  I know I can do module.varname
> = varname from the importing module but I would prefer not to). 
> 
> Below is my sample program.  I would like to launch test.py and declare
> some global variable A, then import test_mod and hopefully get access
> to A from within test_mod.  
> 
> What I'm actually doing is running a code block in an exec block and
> declaring a bunch of globals for that exec.  The code block imports
> some modules and I need those to be able to see the global variables. 
> I can make this work by adding them to __builtins__ but that doesn't
> seem right somehow :) 
> 
> Anyone have any ideas?
> 
> Thanks,
> Jeff
> 
> ---- test program -----------------------------------------
> 
> $ python test.py
> 
> test.py
> -------
> A=100
> import test_mod
> 
> test_mod.py
> -----------
> print A

Well, i'm doing something like this:

gloabls.py:
texture_enabled = 1;

filea:
if button_pushed = something_or_other:
  toggle( globals.texture_enabled ) # i.e x = not x, a helper

fileb:
if globals.texture_enabled:
    	do_long_texturing_stuff()
else:
    	do_something_simpler()


Which is basically the same thing that jason said, except i populate the 
file IN the file. Also, you should probably name it something other than 
'globals', seeing how that is a builtin function name (didn't know at the 
time, got real confused when i went to use it :).

The benefit in either case, is that you put all of your global data into a 
named structure, which makes things less messy. (You could even import it 
as gb or G or something easy to type, just be consistant :)
-- 
Philip Sw "Starweaver" [rasx] :: www.rubydragon.com



More information about the Python-list mailing list