persistant gloabl vars (very newbie) ?

Erik Johnson ejatsomewhere.com
Wed Dec 27 18:54:45 EST 2006


> but it's still not quit handy
>
> # initialization file (init1.py)
> import time;
> xx = 44
>
> # main file was
> print xx
> x=time.time()
>
> # main file should become
> print init1.xx
> x=init1.time.time()
>
> so even for the "standard" functions like "time" I've to include the
> preceeding module "init1" :-(


Ummm... does this help?

/src/python/Foo> cat init.py
#! /usr/local/bin/python

from time import time
xx = 44

/src/python/Foo> python
Python 2.3.4 (#1, Feb  7 2005, 15:50:45)
[GCC 3.3.4 (pre 3.3.5 20040809)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from init import *
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', 'time', 'xx']
>>> xx
44
>>> time
<built-in function time>
>>> time()
1167262478.6845641
>>> xx = 42  # this does not change the init module's value!
>>> import init
>>> init.xx
44

    As Piet points out, you get a copy of variables defined in a module when
using the from module import * syntax (as is demonstrated by the assignment
above). (And I stand corrected on the notion that you could execute "from
module import *" in other than module level scope.)

    If it is your intention to use those variables defined in init to
communicate with other modules making the same sort of import, then you
probably don't want to use  "from module import *"  syntax.  In that case,
you can import just the module, and make assignments into that module's
namespace. (e.g., init.xx = 3)

    If all you care about is getting some "stuff" into your global namespace
in a convenient and repeatable way, then I think what I showed both above
and originally is fine.

-ej





More information about the Python-list mailing list