newbie: from .. import *
Chris Liechti
cliechti at gmx.net
Thu Jun 13 18:54:37 EDT 2002
jseb at cs.mcgill.ca (Jean-Sébastien Bolduc) wrote in
news:56e1eff0.0206131437.4ca8ed9e at posting.google.com:
> I've been working with Python for a while, but never really felt
> confortable with the way namespaces are imported.
>
> I'm working on a simple application that is to be used in the
> interactive mode. The idea is that the behavior of a function is
> determined, in part, by some global(?) flags. So I can change my
> flags, and explicitely call my function. Really simple. Except that
> for some reason, it does not work.
>
> In "test.py", I have the following:
>
> flag = 1
> def foo():
> print flag
> foo()
> flag = 0
> foo()
>
> In the interactive mode, if I import the code above as:
>>>> from test import *
> 1
> 0
>
> The output is as expected. However, if I continue:
>>>> flag = 1
>>>> foo()
> 0
>
> (!) Okay... not what _I_ expected. It sounds really silly, but I've
> spent a couple of hours on that, without success. I thought at some
> point that using "global" would help me. Of course, if I just do
> "import test", everything works fine --- but in interactive mode, I
> don't want to type "test.foo()"
>
> Some help?
the function still runs in the namespace of its module.
you can explicit use a module to store global values. e.g. you could
use __main__.
test.py:
import __main__
__main__.flag = 0
def foo():
print __main__.flag
...
of course you can use any module for that, not only __main__.
chris
--
Chris <cliechti at gmx.net>
More information about the Python-list
mailing list