开发者

How to share globals between imported modules?

I have two modules, a.py and b.py. I want the globals from a.py to be available in b.py like this:

a.py:

#!/usr/bin/env python
var = "this is global"
import b
b.foo()

b.py:

#!/usr/bin/env python
var = "this is global"
def foo():
    print var
开发者_如何学Go

Currently, I re-declare the globals in each module. There must be an easier way.


Create a settings module that has shared globals if that's what you want. That way you're only importing and referencing each global one time, and you're keeping them isolated within the namespace of the settings module. It's a good thing.

#settings.py
var = 'this is global'

# a.py
import settings
import b
b.foo()

# b.py
import settings
def foo():
    print settings.var


By making b.py require globals from a.py, you have created classes that depend on each other, which is bad design.

If you have static variables that need to be shared, consider creating c.py which both a.py and b.py can import and reference.

If you have dynamic variables that need to be shared, consider creating a settings class that can be instantiated and passed between the modules.


Define your globals in c.py and import them into a.py and b.py

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜