By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,370 Members | 1,581 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,370 IT Pros & Developers. It's quick & easy.

"from module import *" and modifying module's top-level vars

P: n/a
Hi everyone,

I define some vars and functions in a "support" module which gets
called from my
main app module. Using Python 2.5.

I import all symbols in the support module at the top of the main
module through:

from support import *

Is there a way for me to modify a top-level ("global"?) variable
defined in module
support from the code in the main module and still have those changes
visible to
code in the support module?

Consider the following example:

# support.py

globvar = "old"

def fun():
print "fun(): globvar==" + globvar

# main.py

from support import *
global globvar # had hoped this would do the trick (as it does when
placed inside a function call)
glob = "new"

print "top level(): glob==" +glob

fun() # defined inside support

Calling main.py outputs

top level(): glob==new
fun(): glob==old

How can I get the assignment to globvar performed inside module main.py
to be
felt by the code in support.py?

Thanks in advance!

Best

Juergen Lemke

Oct 29 '06 #1
Share this Question
Share on Google+
1 Reply


P: n/a
le***********@yahoo.de schrieb:
Hi everyone,

I define some vars and functions in a "support" module which gets
called from my
main app module. Using Python 2.5.

I import all symbols in the support module at the top of the main
module through:

from support import *

Is there a way for me to modify a top-level ("global"?) variable
defined in module
support from the code in the main module and still have those changes
visible to
code in the support module?
No. The from foo import * will create local bindings of the
module-globals in the importing module, and there is no implicit link to
the module's names.

This is the main reason why the "from foo import *"-form is frowned
upon, and you should refrain from using it.

Use e.g.

import support as s

instead, to get a shorter name for referencing the support module.

Diez
Oct 29 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.