Jay L
Jay L

Reputation: 51

Importing global namespace in python

let's say i have the following files:

a.py

glo_var = 0
def func():
    global glo_var
    glo_var = 5
    print "A %d" % (glo_var)

b.py

from a import *
func()
print "B %d" % (glo_var)

If I ran b.py the output is:

A 5
B 0

My question is, how to import the global namespace so the output will be

A 5
B 5

I need to call the function in the module a.py from b.py so it will affect the globals.

I don't want to use regular "import" but to use it this way, "from a import *"

Upvotes: 4

Views: 1531

Answers (1)

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 798536

Using from ... import ... copies the references from the other module. Rebinding the value in the original causes it to have a new reference, breaking the link between a.glo_var and b.glo_var permanently. Either use a mutable object and mutate it, or reimport a.glo_var whenever you need the updated value.

Upvotes: 4

Related Questions