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